1

オブジェクトをセットアップするための次のコードがあります。

myObj.prototype.__init = function(a, b, c){
    this.a = a;
    this.b = b;
    this.c = c;
}

そして、別の関数aで、メソッドで I セットアップを使用したい__init:

myObj.prototype.myFunc = function(){
    var data = parse(a);
        //...
}

問題はそれaですundefined。私も試しthis.aてみましたが、それも結果undefinedです。面白いことに、 aをconsole.log(myO)実行した後、フィールドが初期化された状態でオブジェクトが出力されます。オブジェクトのその関数内にアクセスするにはどうすればよいですか?var myO = new myObj();myO.__init(myA, myB, myC);aa

ありがとう

編集: これは myFunc への呼び出しです:

someVar = new tccHandler.myObj();
someVar.__init(myA, myB, myC);
someVar.myFunc();
4

2 に答える 2

2

であるべきだと思いますparse(this.a)

のプロパティは、デフォルトでは識別子 [読み取り: 変数] のルックアップ チェーンに含まれてthisないことに注意してください。「グローバルオブジェクト」(つまり)のレキシカル変数windowとプロパティのみです。

a関数内の変数(__init関数パラメーターとして) であり、名前が付けられたオブジェクトはプロパティ this.aに割り当てられますが、関数の変数でaはありませんmyFunc。各関数は、独自のレキシカル スコープを導入します。

ハッピーコーディング!

于 2012-04-12T17:30:06.160 に答える
0

通常の JavaScript では、次のようにします。

myObj = function(a,b,c) {
    this.a = a;
    this.b = b;
    this.c = c;
}

デモ:

> var x = new myObj(1,2,3);
> x.a;
1
于 2012-04-12T17:30:51.813 に答える