Malah, kunci kepada masalah ialah kita tidak memahami peranan fungsi panggilan/guna. Dalam istilah rasmi, ini bermakna menukar konteks skop, tetapi di sini konteks setempat ditukar kepada tetingkap. Sebenarnya, panggilan/terapkan adalah kaedah "membunuh seseorang dengan pisau yang dipinjam", iaitu, jika anda tidak mempunyai atribut atau kaedah tertentu, dan kemudian anda ingin memanggil atribut atau kaedah objek lain, ia adalah juga kaedah pelaksanaan pewarisan objek.
Sebenarnya, ia tidak semestinya Windows, dan lebih baik menggunakan panggilan Anda hanya perlu mengisytiharkan var that=this dalam f dan menulis ini daripada fungsi penutupan ini kerana fungsi penutupan tidak boleh secara langsung dapatkan pembolehubah persekitaran fungsi atas Anda hanya boleh mendapat angin, jadi kenyataan itu ok Jika anda tidak faham, anda boleh bertanya kepada saya
Jika ia adalah bahagian hadapan, fungsi ini mempunyai parameter yang tidak kelihatan ini, yang secara lalai menghala ke tetingkap pembolehubah global. Melainkan anda menukar objek yang ditunjuk oleh ini, seperti foo.call (objek lain) Ayat asal menggunakan parameter lalai ini Anotasi dengan jelas menyatakan bahawa ini menghala ke tetingkap
Saya akan menulis beberapa ayat lagi, jika tidak, saya akan menjelaskannya
var foo = function () {
console.log(this.x);
}
foo();为什么this指向window呢
Selain itu, semantik ini adalah untuk menunjuk kepada objek yang memanggil fungsi ini. Setiap fungsi memerlukan objek untuk dipanggil obj.f() bermakna f dipanggil oleh obj Jika bahagian hadapan tidak menyatakan objek panggilan, lalai ialah tetingkap pembolehubah global untuk memanggil fungsi
Apabila JavaScript direka, ini dalam fungsi dalaman (iaitu fungsi dalam badan fungsi) akan terikat pada objek global (iaitu tetingkap saya rasa ulasan di sini foo.call(window) hanya perlu menggunakan bahasa js untuk menjelaskan mengapa ini.x masuk). foo() akan mengeluarkan 10.
Malah, kunci kepada masalah ialah kita tidak memahami peranan fungsi panggilan/guna. Dalam istilah rasmi, ini bermakna menukar konteks skop, tetapi di sini konteks setempat ditukar kepada tetingkap. Sebenarnya, panggilan/terapkan adalah kaedah "membunuh seseorang dengan pisau yang dipinjam", iaitu, jika anda tidak mempunyai atribut atau kaedah tertentu, dan kemudian anda ingin memanggil atribut atau kaedah objek lain, ia adalah juga kaedah pelaksanaan pewarisan objek.
Sebenarnya, ia tidak semestinya Windows, dan lebih baik menggunakan panggilan Anda hanya perlu mengisytiharkan var that=this dalam f dan menulis ini daripada fungsi penutupan ini kerana fungsi penutupan tidak boleh secara langsung dapatkan pembolehubah persekitaran fungsi atas Anda hanya boleh mendapat angin, jadi kenyataan itu ok Jika anda tidak faham, anda boleh bertanya kepada saya
Jika ia adalah bahagian hadapan, fungsi ini mempunyai parameter yang tidak kelihatan ini, yang secara lalai menghala ke tetingkap pembolehubah global.
Melainkan anda menukar objek yang ditunjuk oleh ini, seperti foo.call (objek lain)
Ayat asal menggunakan parameter lalai ini
Anotasi dengan jelas menyatakan bahawa ini menghala ke tetingkap
Saya akan menulis beberapa ayat lagi, jika tidak, saya akan menjelaskannya
Selain itu, semantik ini adalah untuk menunjuk kepada objek yang memanggil fungsi ini.
Setiap fungsi memerlukan objek untuk dipanggil
obj.f() bermakna f dipanggil oleh obj
Jika bahagian hadapan tidak menyatakan objek panggilan, lalai ialah tetingkap pembolehubah global untuk memanggil fungsi
Apabila JavaScript direka, ini dalam fungsi dalaman (iaitu fungsi dalam badan fungsi) akan terikat pada objek global (iaitu tetingkap saya rasa ulasan di sini
foo.call(window)
hanya perlu menggunakan bahasa js untuk menjelaskan mengapa ini.x masuk). foo() akan mengeluarkan 10.Ia tidak mengatakan bahawa parameter pertama foo.call mestilah tetingkap Perkara utama soalan ialah untuk memahami apa itu panggilan.
https://developer.mozilla.org...
Anda boleh memahami fungsi dan perbezaan panggilan, gunakan, dan ikat