Cara Mengekalkan Rujukan kepada "ini" dalam Fungsi Prototaip JavaScript
Apabila bekerja dengan prototaip JavaScript, ia mungkin mencabar untuk mengekalkan merujuk kepada kata kunci "ini", yang mewakili konteks semasa fungsi. Ini boleh menjadi masalah apabila anda ingin mengakses sifat atau kaedah objek utama dari dalam fungsi prototaip.
Satu penyelesaian biasa ialah menyimpan rujukan kepada "ini" pada permulaan fungsi prototaip menggunakan var myThis = ini;, seperti yang dicadangkan dalam soalan. Walau bagaimanapun, pendekatan ini boleh menjadi menyusahkan jika anda mempunyai berbilang fungsi prototaip.
Penyelesaian yang lebih cekap ialah menggunakan kaedah .bind(), yang mencipta fungsi baharu yang mengekalkan konteks fungsi asal. Dengan mengikat fungsi asal kepada konteks yang diingini (iaitu, objek utama), anda memastikan bahawa "ini" merujuk kepada objek yang betul di dalam fungsi terikat.
Berikut ialah contoh menggunakan .bind() dalam konteks kod yang disediakan dalam soalan:
<code class="javascript">MyClass.prototype.myfunc = function() { this.element.click((function() { // Within this click handler, "this" refers to the MyClass instance }).bind(this)); };</code>
Dalam contoh ini, kaedah .bind() digunakan untuk mengikat pengendali klik pada konteks fungsi myfunc. Akibatnya, apabila pengendali klik dipanggil, "ini" akan merujuk kepada contoh MyClass dengan betul.
Kaedah .bind() juga menawarkan fleksibiliti. Anda boleh menentukan argumen tambahan untuk dihantar ke fungsi terikat dengan memasukkannya selepas argumen konteks. Ini boleh berguna untuk menghantar parameter atau memulakan sifat dalam fungsi terikat.
Dengan memanfaatkan kaedah .bind(), anda boleh mengekalkan rujukan kepada "ini" dengan berkesan dalam fungsi prototaip JavaScript, memastikan kod anda dikekalkan konteks yang betul dan memudahkan akses kepada sifat dan kaedah objek utama.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Rujukan kepada \'ini\' dalam Fungsi Prototaip JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!