-1

このjson構造がある場合:

var j = {
    param1: 'hello',
    param2: 'world',
    func:   function() {
        console.log(this.param1 + ' ' + this.param2);
    }
};

thisinfuncは定義されていません。このjsonオブジェクトでselfにアクセスするには? ありがとう

編集:

私はそれを試しています:

j.func();
4

2 に答える 2

5

this関数がどのように呼び出されるかによって決まります。あなたの質問に答えるには、あなたがどのように呼ばれているかを確認する必要がありますfunc()

電話をかける場合:

j.func()

次に、thisinsideはfuncに設定されjます。

直接呼び出す場合func()(これは、コールバックとして渡さj.funcれ、その後、他の関数によって直接呼び出される場合に発生します)、thisおそらく、どちらかに設定されるかwindowundefined厳密モードであるかどうかによって異なります。例えば:

function callme(callback) {
    // the context of `j` will be lost here and 
    // this will just call func() directly without setting this to j
    callback();
}

callme(j.func);

thisj.func.apply()またはを使用して呼び出し元が明示的に設定することもできます。j.func.call()これにより、呼び出し元は。の目的の値を指定できますthis

于 2012-12-14T09:19:44.240 に答える
0

j.func()を呼び出すだけで、func の this は j を参照します。

于 2012-12-14T09:20:01.180 に答える