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

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

Barbara Streisand
Lepaskan: 2024-11-04 08:42:01
asal
293 orang telah melayarinya

How to Preserve

Memelihara Rujukan "ini" dalam Fungsi Prototaip JavaScript

Satu cabaran biasa apabila bekerja dengan prototaip JavaScript ialah mengekalkan rujukan "ini" dalam bersarang fungsi. Ini menjadi sangat penting apabila berurusan dengan acara atau panggilan balik.

Memelihara "ini" dengan "bind()":

Kaedah JavaScript bind() membolehkan kami mencipta fungsi baharu yang mengekalkan rujukan "ini" bagi fungsi asal. Ini boleh digunakan untuk memastikan bahawa kata kunci "ini" di dalam fungsi bersarang sentiasa merujuk kepada objek yang diingini.

Dalam contoh yang disediakan:

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

Di sini, kami menggunakan bind() untuk buat pengendali acara klik baharu yang mengekalkan rujukan "ini" objek MyClass. Ini membolehkan kami mengakses sifat MyClass, seperti "this.myValue", dalam pengendali acara.

Memelihara "ini" dengan Penutupan:

Pendekatan lain untuk memelihara "ini" adalah dengan menggunakan penutupan. Penutupan ialah fungsi yang mengekalkan akses kepada pembolehubah skop induknya, walaupun selepas skop induk selesai dilaksanakan.

Dalam contoh yang disediakan, kita boleh menggunakan penutupan untuk mengekalkan "ini":

MyClass.prototype.doSomething = function() {
  var that = this; // Capture "this" in a closure

  this.elements.each(function() {
    // Use "that" to access the MyClass properties
    // ...
  });
};
Salin selepas log masuk

Dalam fungsi dalaman, kita boleh mengakses sifat MyClass dengan merujuk kepada "itu".

Elakkan Pembolehubah Global:

Secara amnya disyorkan untuk mengelak daripada menggunakan pembolehubah global untuk mengekalkan "ini" kerana ia boleh membawa kepada konflik dan pencemaran ruang nama global.

Penyelesaian Bersih dan Cekap:

Menggunakan bind() atau penutupan menyediakan cara yang bersih dan cekap untuk mengekalkan "ini" dalam fungsi prototaip JavaScript tanpa melanggar prinsip reka bentuk atau memperkenalkan kerumitan yang tidak perlu.

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