このjson構造がある場合:
var j = {
param1: 'hello',
param2: 'world',
func: function() {
console.log(this.param1 + ' ' + this.param2);
}
};
this
infunc
は定義されていません。このjsonオブジェクトでselfにアクセスするには? ありがとう
編集:
私はそれを試しています:
j.func();
このjson構造がある場合:
var j = {
param1: 'hello',
param2: 'world',
func: function() {
console.log(this.param1 + ' ' + this.param2);
}
};
this
infunc
は定義されていません。このjsonオブジェクトでselfにアクセスするには? ありがとう
編集:
私はそれを試しています:
j.func();
this
関数がどのように呼び出されるかによって決まります。あなたの質問に答えるには、あなたがどのように呼ばれているかを確認する必要がありますfunc()
。
電話をかける場合:
j.func()
次に、this
insideはfunc
に設定されj
ます。
直接呼び出す場合func()
(これは、コールバックとして渡さj.func
れ、その後、他の関数によって直接呼び出される場合に発生します)、this
おそらく、どちらかに設定されるかwindow
、undefined
厳密モードであるかどうかによって異なります。例えば:
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);
this
j.func.apply()
またはを使用して呼び出し元が明示的に設定することもできます。j.func.call()
これにより、呼び出し元は。の目的の値を指定できますthis
。
j.func()を呼び出すだけで、func の this は j を参照します。