jsx - JavaScript 我做的这个小类,怎么老出错?

查看:97
本文介绍了jsx - JavaScript 我做的这个小类,怎么老出错?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

这个就是调用 _this.arrNew[*] 的时候,就出错,请问怎么回事呢?

function ybLayer(layer)
{

//声明属性:

    var _this=this;    //子类中调用的父类简称;
    var arrNew = new Array();      //★★这个地方,应该就是问题所在,我不会改...

    var myConstruct=function ()    //模拟构造方法;

    {

        arr = layer.bounds;

        //alert(  arr );    //0 px,120 px,2736 px,1944 px

        for(var i in arr)
        {
            a = arr[i];    // 这个这个a ,是个 unitValueObject , 0 -> 0 px
            a = String(a);    //把unitValueObject转成String
            a = a.replace( " px" , "" ) ;    //处理
            a = parseInt( a );
            _this.arrNew[i] = a;    //★★★★★★★★★★★★就是这里,老出错..
        }


        _this.ybLeftTopX = _this.arrNew[0];
        _this.ybLeftTopY = _this.arrNew[1];
        _this.ybRightBottomX = _this.arrNew[2];
        _this.ybRightBottomY = _this.arrNew[3];
        _this.ybWidth = _this.arrNew[2]-_this.arrNew[0];
        _this.ybLength = _this.arrNew[3]-_this.arrNew[1];

    }

    myConstruct();
}

解决方案

function ybLayer(layer)
{

//声明属性:

    var _this=this;                // 子类中调用的父类简称(不太理解你的意思); 
                                   // 我的解释:new ybLayer(layer) 方式创建实例
                                   // 则这边的 this 存的就是 ybLayer 这个构造函数的实例;
                                   // 若是 ybLayer.call(obj , layer) 这种方式调用,
                                   // 那么 this = obj
    
    var arrNew = new Array();      //★★这个地方,应该就是问题所在,我不会改...
                                   // 实际上你这边不过就是创建了个局部变量
                                   // 然后你就想当然的以为 arrNew 好像就是 this 对象
                                   // 的属性一样,实际上并不是,如果要改,需改成这样:
                                   // _this.arrNew = new Array();

    var myConstruct=function ()    //模拟构造方法;

    {

        arr = layer.bounds;

        //alert(  arr );    //0 px,120 px,2736 px,1944 px

        for(var i in arr)
        {
            //--------------------------------------------------------------
            a = arr[i];    // 这个这个a ,是个 unitValueObject , 0 -> 0 px
            a = String(a);    //把unitValueObject转成String
            a = a.replace( " px" , "" ) ;    //处理
            a = parseInt( a );
            //----------------------------------------------------------------
            // 以上一连串的操作,可以简化成: a = parseInt(arr[i]) 一步就可以了
            // 具体的去查询 parseInt 这个函数的作用
            //----------------------------------------------------------------
            _this.arrNew[i] = a;    //★★★★★★★★★★★★就是这里,老出错..
                                    // 这里老是出错是因为,_this 这个对象本身没有
                                    // arrNew 这个属性,所以才出错,具体修改看上面
        }


        _this.ybLeftTopX = _this.arrNew[0];
        _this.ybLeftTopY = _this.arrNew[1];
        _this.ybRightBottomX = _this.arrNew[2];
        _this.ybRightBottomY = _this.arrNew[3];
        _this.ybWidth = _this.arrNew[2]-_this.arrNew[0];
        _this.ybLength = _this.arrNew[3]-_this.arrNew[1];

    }

    myConstruct();
}

这篇关于jsx - JavaScript 我做的这个小类,怎么老出错?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆