Pergi terus ke kod:
var test = {
outer: function () {
// 此时this指向test对象
console.log(this);
function inner() {
// 此时this指向window
console.log(this);
}
inner();
}
}
Apakah sebab mengapa titik kod di atas ini berbeza?
Saya faham sangat sekarang, tolong beri saya jawapan!
Membuang fungsi peminjaman dan pembina, hanya tinggal dua jenis, satu fungsi biasa dan satu lagi kaedah objek.
Kaedah objek menghala ke objek, fungsi biasa menghala ke global
Siapa yang memanggil fungsi ini, maka
Penunjukanthis
tunjuk kepada siapa.
pertama menunjuk kepadathis
的指向只和你如何调用这个函数有关,比如你说第一个this
指向test
,这可不一定,有的是办法把这个this
的指向改掉。只有当你运行test.outer()
的时候,第一个this
才会指向test
hanya berkaitan dengan cara anda memanggil fungsi ini Sebagai contoh, jika anda mengatakan bahawatest.outer()
🎜 yang pertama akan menunjuk ketest
. 🎜/a/11...
Ini ialah masalah penutupan apabila objek diberikan atribut melalui literal objek, termasuk kaedah fungsi, kaedah fungsi ini mempunyai output konsol, dan kemudian fungsi diisytiharkan dalam fungsi ini, masalah penutupan terbentuk dalam keadaan biasa , ini menunjuk ke tetingkap Dalam keadaan istimewa, anda boleh menukar nilai ini. Anda boleh membaca artikel yang saya tulis tentang penutupan paket Anda akan mendapat cerapan tentang kesulitan telefon bimbit
Malah, adalah salah untuk menjawab tanpa nama! Fungsi yang ditakrifkan di dalam fungsi dalam objek tidak boleh mendapatkan pembolehubah persekitaran peringkat atas secara langsung, apatah lagi di dalam ini Anda mesti menentukan pembolehubah untuknya, seperti var that=this, anda boleh mendapatkan bahagian atas-. tingkatkan objek ini;
var test = {