var str="hello";【这个str,obj对象里可以读取】
var obj={
str:"world";
fun:function(){
alert(str);【这个str指obj外部str是【window.str简写】,想要弹出"world"需要使用,this.str,指定作用域。】
}
}
Kerana str:"world" yang ditulis dalam objek obj anda bermaksud obj.str="world". Ini adalah harta, bukan pembolehubah. Perkara yang muncul dalam obj.fun() terakhir yang anda jalankan ialah pembolehubah str, bukan atribut (sudah tentu ini juga merupakan atribut tetingkap global). Jadi awak faham? Jika anda memberi amaran this.str atau obj.str anda boleh mendapatkan "dunia".
Str pembolehubah sebenarnya adalah atribut tetingkap dan tiada kaitan dengan atribut str objek obj. Ini tidak melibatkan isu rantaian skop Perkara yang anda faham hendaklah seperti berikut:
var str="hello";
function change(){
str="world";
alert(str)
}
change();
Dalam contoh ini, pembolehubah global mula-mula ditetapkan semula dalam perubahan fungsi Apabila anda ingin melaksanakan amaran(str), anda mencari pembolehubah str pada titik permulaan rantai skop anda sendiri, iaitu, dalam pembolehubah anda sendiri. objek. Jika anda mendapati ia tidak ditemui, teruskan carian Tahap 1 menemui pembolehubah str, tetapi pada masa ini str telah ditetapkan semula ke dunia, jadi dunia akan muncul.
Kerana str:"world" yang ditulis dalam objek obj anda bermaksud obj.str="world". Ini adalah harta, bukan pembolehubah. Perkara yang muncul dalam obj.fun() terakhir yang anda jalankan ialah pembolehubah str, bukan atribut (sudah tentu ini juga merupakan atribut tetingkap global). Jadi awak faham? Jika anda memberi amaran this.str atau obj.str anda boleh mendapatkan "dunia".
Str pembolehubah sebenarnya adalah atribut tetingkap dan tiada kaitan dengan atribut str objek obj. Ini tidak melibatkan isu rantaian skop Perkara yang anda faham hendaklah seperti berikut:
Dalam contoh ini, pembolehubah global mula-mula ditetapkan semula dalam perubahan fungsi Apabila anda ingin melaksanakan amaran(str), anda mencari pembolehubah str pada titik permulaan rantai skop anda sendiri, iaitu, dalam pembolehubah anda sendiri. objek. Jika anda mendapati ia tidak ditemui, teruskan carian Tahap 1 menemui pembolehubah str, tetapi pada masa ini str telah ditetapkan semula ke dunia, jadi dunia akan muncul.
Adakah anda faham?