jsx - JavaScript 我做的这个小类,怎么老出错?
本文介绍了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屋!
查看全文