我正在尝试访问类的成员变量,该类是类的成员函数中的数组但是收到错误:
无法读取未定义
的属性'length'
类别:
function BasicArgs(){
var argDataType = new Uint8Array(1);
var argData = new Uint32Array(1);
}
会员功能:
BasicArgs.prototype.getByteStreamLength = function(){
alert(this.argData.length);
return i;
}
这是其中一个例子,但我在很多地方遇到过这种情况。 像integer这样的变量很容易访问,但大多数时候问题都在于数组。 帮助将不胜感激。
答案 0 :(得分:3)
您需要this
在构造函数中创建对象的属性。
function BasicArgs(){
this.argDataType = new Uint8Array(1);
this.argData = new Uint32Array(1);
}
原型函数无法直接访问构造函数的变量范围。
然后一定要使用new
来调用构造函数。
var ba = new BasicArgs();
ba.getByteStreamLength();
答案 1 :(得分:0)
您可以访问功能的私人变量
修改后的代码:
function BasicArgs(){
this.argDataType = new Uint8Array(1);
this.argData = new Uint32Array(1);
}
BasicArgs.prototype.getByteStreamLength = function(){
alert(this.argData.length);
return i;
}
答案 2 :(得分:0)
声明var argData
不会在对象上创建属性。它只是创建一个局部变量,一旦构造函数退出就会消失。你需要做
this.argData = new Uint32Array(1)
代替。