Rumah > hujung hadapan web > tutorial js > Bagaimana untuk Mengekalkan Rujukan \'ini\' dalam Fungsi Prototaip JavaScript?

Bagaimana untuk Mengekalkan Rujukan \'ini\' dalam Fungsi Prototaip JavaScript?

Susan Sarandon
Lepaskan: 2024-11-04 03:33:02
asal
306 orang telah melayarinya

How to Preserve the 'this' Reference in JavaScript Prototype Functions?

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, ...);
Salin selepas log masuk

Sebagai contoh:

MyClass.prototype.myfunc = function() {
  this.element.click(this.myfunc.bind(this));
};
Salin selepas log masuk

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;
  ...
};
Salin selepas log masuk

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
};
Salin selepas log masuk

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));
};
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan