Bagaimanakah anda boleh mengekalkan konteks \'ini\' dalam fungsi prototaip JavaScript?

Susan Sarandon
Lepaskan: 2024-11-11 10:24:02
asal
949 orang telah melayarinya

How can you preserve the context of

Memelihara Konteks "ini" dalam Fungsi Prototaip JavaScript

Masalah:

Dalam JavaScript prototaip, apabila mentakrifkan fungsi dalam prototaip, skop berubah dan nilai "ini" mungkin tidak lagi merujuk kepada contoh kelas. Ini boleh menjadikannya mencabar untuk mengakses sifat dan kaedah objek asal.

Penyelesaian: Menggunakan Kaedah bind()

Kaedah bind() membenarkan pembangun untuk mengekalkan konteks "ini" dalam fungsi prototaip. Ia mengembalikan fungsi baharu dengan konteks yang ditentukan terikat sebagai argumen pertamanya, manakala argumen yang selebihnya dihantar ke fungsi asal.

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

Dalam contoh ini, kaedah bind() digunakan untuk mengekalkan konteks daripada "ini" dalam fungsi tanpa nama yang diberikan kepada pengendali acara klik.

Contoh dengan Berbilang Prototaip Fungsi:

Menggunakan bind() menghapuskan keperluan untuk menyimpan rujukan secara eksplisit kepada "ini" dalam setiap fungsi prototaip. Contohnya:

MyClass.prototype.doSomething = function() {
  // operate on the element
}.bind(this);
Salin selepas log masuk

Dengan menggunakan bind() dalam takrifan doSomething, konteks "ini" dipelihara secara automatik untuk semua kejadian kelas.

Mengelakkan Global Pembolehubah:

Menggunakan pembolehubah global untuk memegang rujukan kepada "ini" tidak disyorkan kerana ia mencemarkan ruang nama global dan menghalang berbilang contoh kelas daripada dicipta tanpa mengganggu satu sama lain. Kaedah bind() menawarkan penyelesaian yang lebih cekap dan bersih.

Kesimpulan

Kaedah bind() menyediakan cara yang berkesan untuk mengekalkan konteks "ini" dalam fungsi prototaip, menghapuskan keperluan untuk rujukan manual dan pembolehubah global. Pendekatan ini meningkatkan kebolehbacaan kod, kebolehselenggaraan dan fleksibiliti dalam aplikasi JavaScript prototaip.

Atas ialah kandungan terperinci Bagaimanakah anda boleh mengekalkan konteks \'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