Bagaimana untuk Memastikan Skop Kaedah Contoh yang Betul dalam Pengendali Acara dalam JavaScript?

Patricia Arquette
Lepaskan: 2024-11-06 16:39:02
asal
596 orang telah melayarinya

How to Ensure the Correct Scope of Instance Methods within Event Handlers in JavaScript?

Memastikan Skop Kaedah Contoh yang Betul dalam Pengendali Acara: Amalan Terbaik

Dalam JavaScript, menggunakan kaedah contoh sebagai panggilan balik untuk pengendali acara memberikan cabaran skop. Pembolehubah ini boleh beralih daripada mewakili contoh objek kepada elemen yang mencetuskan panggilan balik. Untuk menangani perkara ini, pembangun sering menggunakan pendekatan berikut:

function MyObject() {
  this.doSomething = function() {
    ...
  }

  var self = this;
  $('#foobar').bind('click', function() {
    self.doSomething();
    // this.doSomething() would not work here
  })
}
Salin selepas log masuk

Semasa ia berfungsi, kebimbangan mungkin timbul mengenai kebolehbacaan dan kecekapannya. Penyelesaian yang lebih elegan wujud yang memanfaatkan konsep penutupan.

Penutupan dan "Penyaluran" Pembolehubah

Penutupan membenarkan fungsi terbenam untuk mengakses pembolehubah yang ditakrifkan dalam skop induknya, dengan berkesan "menyalurkan"nya. Sebagai contoh, pertimbangkan contoh berikut:

var abc = 1; // we want to use this variable in embedded functions

function xyz() {
  console.log(abc); // it is available here!
  function qwe() {
    console.log(abc); // it is available here too!
  }
  ...
}
Salin selepas log masuk

Walau bagaimanapun, teknik ini tidak berkesan untuk pembolehubah ini kerana ia boleh menukar skop secara dinamik:

// we want to use "this" variable in embedded functions

function xyz() {
  // "this" is different here!
  console.log(this); // not what we wanted!
  function qwe() {
    // "this" is different here too!
    console.log(this); // not what we wanted!
  }
  ...
}
Salin selepas log masuk

Menetapkan Alias ​​untuk ini

Penyelesaian melibatkan pemberian alias kepada ini, mengekalkan nilainya dalam fungsi terbenam.

var abc = this; // we want to use this variable in embedded functions

function xyz() {
  // "this" is different here! --- but we don't care!
  console.log(abc); // now it is the right object!
  function qwe() {
    // "this" is different here too! --- but we don't care!
    console.log(abc); // it is the right object here too!
  }
  ...
}
Salin selepas log masuk

Menggunakan teknik ini memastikan skop dan kejelasan yang betul dalam pengendali acara, menawarkan pendekatan yang lebih mantap dan boleh diselenggara.

Atas ialah kandungan terperinci Bagaimana untuk Memastikan Skop Kaedah Contoh yang Betul dalam Pengendali Acara 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!