Rumah > hujung hadapan web > tutorial js > Mengapa Gunakan \'var self = this\' dalam JavaScript?

Mengapa Gunakan \'var self = this\' dalam JavaScript?

Susan Sarandon
Lepaskan: 2024-11-27 02:11:10
asal
661 orang telah melayarinya

Why Use

Idiom JavaScript: Memahami "var self = this"

The "var self = this;" simpulan bahasa biasanya dilihat dalam kod JavaScript, terutamanya dalam pengendali acara. Ia membolehkan anda mengekalkan rujukan kepada objek asal "ini" dalam fungsi bersarang atau dalam penutupan pengendali acara.

Apabila anda mentakrifkan fungsi dalam pembina atau objek, konteks pelaksanaan berubah dan "ini" merujuk ke objek global (tetingkap) dalam mod tidak ketat. Dalam mod ketat, "ini" tidak akan ditentukan. Untuk mengelakkan perkara ini, pembangun menggunakan "var self = this" untuk mengekalkan rujukan kepada objek asal.

Mengapa Gunakan "var self = this"?

Pertimbangkan contoh berikut daripada Demo Nota Storan HTML5 SQL WebKit:

function Note() {
  var self = this;

  var note = document.createElement('div');
  note.className = 'note';
  note.addEventListener('mousedown', function(e) { return self.onMouseDown(e) }, false);
  note.addEventListener('click', function() { return self.onNoteClick() }, false);
  this.note = note;
  // ...
}
Salin selepas log masuk

Dalam kod ini, "diri" ditugaskan kepada "ini" dalam pembina. Ini memastikan bahawa apabila pengendali acara dipanggil (cth. mengklik div 'nota'), "ini" masih akan merujuk kepada objek Nota asal, membenarkan kaedah seperti "onMouseDown" dipanggil dengan betul.

Adakah "var self = this" Biasa?

Ya, simpulan bahasa ini digunakan secara meluas dalam aplikasi JavaScript, terutamanya apabila berurusan dengan penutupan dan pengendali acara. Ia membolehkan pembangun mengekalkan rujukan kepada konteks asal dalam fungsi bersarang.

Pendekatan Alternatif

Walaupun "var self = this" berkesan, ia boleh mengelirukan untuk membaca. Pendekatan alternatif ialah menggunakan fungsi anak panah (diperkenalkan dalam ES6), yang mengekalkan pengikatan "ini" bagi konteks sekeliling.

Contohnya:

function Note() {
  var note = document.createElement('div');
  note.className = 'note';
  note.addEventListener('mousedown', (e) => { this.onMouseDown(e) });
  note.addEventListener('click', () => { this.onNoteClick() });
  this.note = note;
  // ...
}
Salin selepas log masuk

Nota:

Kini tidak digalakkan untuk menggunakan "var self = this" kerana ia berpotensi menyebabkan ralat disebabkan kewujudan "window.self". Adalah disyorkan untuk menggunakan fungsi anak panah atau alternatif lain untuk mengekalkan pengikatan "ini".

Atas ialah kandungan terperinci Mengapa Gunakan \'var self = this\' dalam 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