Cara Mengekalkan Rujukan 'ini' dalam Fungsi Prototaip JavaScript
Dalam JavaScript, mengekalkan rujukan kepada 'ini' dalam fungsi prototaip boleh mencabar apabila skop berubah. Untuk menangani isu ini, pertimbangkan penyelesaian berikut:
Menggunakan Kaedah Bind
Kaedah bind membolehkan anda mencipta fungsi baharu yang mengekalkan rujukan 'ini' kepada objek asal. Penggunaan:
function.bind(object, argument1, argument2, ...);
Sebagai contoh:
MyClass.prototype.myfunc = function() { this.element.click(this.myfunc.bind(this)); };
Ini memastikan bahawa 'ini' merujuk kepada contoh MyClass apabila acara klik dicetuskan.
Mencipta Rujukan kepada 'ini'
Anda juga boleh membuat rujukan kepada 'ini' dalam fungsi prototaip:
MyClass.prototype.myfunc = function() { var myThis = this; ... };
Ini membolehkan anda mengakses 'this.myValue' dalam fungsi bersarang. Walau bagaimanapun, anda mungkin perlu mencipta rujukan ini untuk setiap fungsi prototaip, yang boleh menyusahkan.
Menggunakan Fungsi Anak Panah
Fungsi anak panah mewarisi nilai 'ini' bagi konteks sekeliling, yang boleh memudahkan kod:
MyClass.prototype.doSomething = () => { // operate on the element };
Mengelakkan Pembolehubah Global
Elakkan menggunakan pembolehubah global untuk memegang rujukan 'ini', kerana ini mencemarkan ruang nama global dan boleh membawa kepada konflik apabila berbilang objek MyClass wujud.
Contoh dengan jQuery Each
Untuk bekerja dengan setiap kaedah jQuery, anda boleh menggunakan kaedah bind untuk mengekalkan ' rujukan ini:
MyClass.prototype.doSomething = function() { this.elements.each(this.doSomething.bind(this)); };
Kesimpulan
Walaupun menggunakan corak prototaip secara amnya dianggap sebagai amalan yang baik, memahami cara mengekalkan rujukan 'ini' yang betul adalah penting untuk memelihara keadaan objek dan tingkah laku. Kaedah bind dan teknik lain boleh memberikan penyelesaian yang berkesan untuk cabaran ini.
Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Rujukan \'ini\' dalam Fungsi Prototaip JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!