4

我正在尝试访问一个类的成员变量,该变量是类的成员函数中的一个数组,但出现错误:

无法读取'length'未定义的属性

班级:

function BasicArgs(){
  var argDataType = new Uint8Array(1);
  var argData = new Uint32Array(1);
}

会员功能:

BasicArgs.prototype.getByteStreamLength = function(){
  alert(this.argData.length);
  return i;
}

这是一个例子,但我在很多地方都遇到过。像整数这样的变量很容易访问,但大多数时候问题出在数组上。帮助将不胜感激。

4

3 回答 3

3

您需要this在构造函数中创建对象的属性。

function BasicArgs(){
    this.argDataType = new Uint8Array(1);
    this.argData = new Uint32Array(1);
}

原型函数无法直接访问构造函数的变量范围。

然后一定要使用new来调用构造函数。

var ba = new BasicArgs();

ba.getByteStreamLength();
于 2012-10-18T14:33:01.623 回答
0

您可以访问函数的私有变量

修改后的代码:

   function BasicArgs(){
      this.argDataType = new Uint8Array(1);
     this.argData = new Uint32Array(1);
    }

    BasicArgs.prototype.getByteStreamLength = function(){
       alert(this.argData.length);
        return i;
    }
于 2012-10-18T14:33:31.233 回答
0

声明var argData不会在对象上创建属性。它只是创建一个局部变量,一旦构造函数退出,该变量就会消失。你需要做

this.argData = new Uint32Array(1)

反而。

于 2012-10-18T14:34:11.543 回答