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

宣言var argDataしても、オブジェクトにプロパティは作成されません。コンストラクターが終了するとすぐに消えるローカル変数を作成するだけです。あなたがする必要があります

this.argData = new Uint32Array(1)

代わりは。

于 2012-10-18T14:34:11.543 に答える
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 に答える