Rumah > Soal Jawab > teks badan
Seperti yang ditunjukkan dalam gambar, adakah anda ingin bertanya kepada semua orang, mengapa parameter pertama tetingkap foo.call()?
女神的闺蜜爱上我2017-07-05 11:08:26
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.
高洛峰2017-07-05 11:08:26
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
滿天的星座2017-07-05 11:08:26
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
怪我咯2017-07-05 11:08:26
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.
曾经蜡笔没有小新2017-07-05 11:08:26
Ia tidak mengatakan bahawa parameter pertama foo.call mestilah tetingkap Perkara utama soalan ialah untuk memahami apa itu panggilan.
https://developer.mozilla.org...