Mengapa JavaScript bind() Diperlukan?
Masalah dan Penyelesaian
Dalam JavaScript, kata kunci ini merujuk kepada objek di mana fungsi digunakan. Walau bagaimanapun, apabila fungsi ditugaskan kepada pembolehubah dan kemudian dipanggil secara tidak langsung, nilai ini boleh menjadi tidak dapat diramalkan. Ini boleh membawa kepada ralat seperti "ini tidak ditentukan" atau "ini adalah objek global."
Untuk menangani isu ini, JavaScript menyediakan kaedah bind(). Dengan memanggil bind(objek), anda boleh menetapkan nilai ini secara eksplisit untuk fungsi tersebut, walaupun apabila ia dipanggil kemudian. Ini menghalang nilai ini daripada berubah secara tidak dijangka.
Mengapa Masalah Berlaku
Seperti yang dijelaskan sebelum ini, nilai ini ditentukan oleh konteks seruan. Apabila fungsi dipanggil secara langsung, nilai ini hanyalah objek yang digunakan. Walau bagaimanapun, apabila fungsi ditugaskan kepada pembolehubah, ia kehilangan konteks pemanggilan asalnya.
Contoh 1
<code class="js">this.name = "John"; var myName = { name: "Tom", getName: function() { return this.name } } var storeMyName = myName.getName;</code>
Dalam Contoh 1, storeMyName ialah rujukan kepada fungsi getName. Apabila storeMyName dipanggil, ia kehilangan konteks asalnya dalam objek myName. Oleh itu, storeMyName di dalam ini merujuk kepada objek global, bukan objek myName.
Penyelesaian (bind)
<code class="js">var storeMyName2 = myName.getName.bind(myName);</code>
Dalam Contoh 2, bind() digunakan untuk menetapkan nilai ini secara eksplisit untuk getName kepada objek myName. Ini memastikan bahawa apabila storeMyName2 dipanggil, ini akan merujuk kepada objek myName, bukan objek global.
Mengapa Contoh 3 Menyelesaikan Isu
<code class="js">var storeMyName3 = myName.getName();</code>
Contoh 3 adalah berbeza daripada yang lain kerana ia tidak menetapkan fungsi kepada pembolehubah. Sebaliknya, ia memanggil myName.getName() terus dan menyimpan hasilnya dalam storeMyName3. Ini bermakna storeMyName3 bukan fungsi, sebaliknya nilai yang dikembalikan oleh fungsi getName. Oleh itu, ia tidak perlu risau tentang nilai ini.
Atas ialah kandungan terperinci Mengapa Kaedah Bind() Penting dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!