Rumah > Soal Jawab > teks badan
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!
大家讲道理2017-07-05 10:58:18
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
曾经蜡笔没有小新2017-07-05 10:58:18
Siapa yang memanggil fungsi ini, maka this
tunjuk kepada siapa.
this
的指向只和你如何调用这个函数有关,比如你说第一个this
指向test
,这可不一定,有的是办法把这个this
的指向改掉。只有当你运行test.outer()
的时候,第一个this
才会指向test
hanya berkaitan dengan cara anda memanggil fungsi ini Sebagai contoh, jika anda mengatakan bahawa
test.outer()
🎜 yang pertama akan menunjuk ke test
. 🎜女神的闺蜜爱上我2017-07-05 10:58:18
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
巴扎黑2017-07-05 10:58:18
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 = {
outer: function () {
// 此时this指向test对象
var that=this
console.log(this);
function inner() {
// 此时this指向window
console.log(that);
}
inner();
}
}