Rumah > Soal Jawab > teks badan
window.val = 1;
var json = {
val:10,
dbl:function(){
this.val = 2;
}
};
json.dbl();//this.val = 2 ⒈
var dbl = json.dbl; ⒉
dbl();//window.val = 1; ⒊
json.dbl.call(window);//this指向变为window,并且执行,window.val = 1; ⒋
alert(window.val + json.val);//json指向为window,所以val为1,1+1=2??? ⒌
Komen adalah pemahaman awal saya, dan selepas melihat hasilnya, saya cuba menggunakan jawapan untuk berfikir ke belakang untuk mencari sebabnya.
==========================Barisan pemisah selepas membaca jawapan ================== ==========
Selepas langkah ⒈, ini masih dbl, dan val ialah 2 pada masa ini Selepas langkah ⒉ ⒊, window.val = 1 dipanggil terus, dan kemudian panggilan menukar titik ini dan melaksanakannya ke tetingkap, dan secara langsung menimpa atribut val di bawah tetingkap, jadi window.val ialah 2, dan langkah terakhir 2 menjadi 2+2=4.
Saya tidak tahu sama ada idea ini betul, tolong beri saya nasihat, terima kasih!
仅有的幸福2017-05-19 10:43:46
json.dbl();//this.val = 2 ⒈
var dbl = json.dbl; ⒉
dbl();//window.val = 2; ⒊
alert(window.val + json.val);//2+2 4
Apabila dbl() dilaksanakan, ini ialah objek tetingkap, window.val = 2, bahagian keempat anda tidak diperlukan
世界只因有你2017-05-19 10:43:46
window.val = 1;
var json = {
val:10,
dbl:function(){
this.val = 2;
}
};
json.dbl();//这一步,通过json调用dbl方法,把json里面的val值改为2
var dbl = json.dbl;//这步,把dbl函数赋值给dbl
dbl();//直接调用dbl函数,函数里面的this指向window,所以把Window.val的值也改为2
json.dbl.call(window);//跟上一句一样,再一次把window.val的值改为2
alert(window.val + json.val);//经过上面的修改,window的val为2,json里面的val为2,所以弹出:2 + 2 = 4