Bagaimanakah Saya Boleh Mengekalkan Konteks dalam Panggilan Balik Pengendali Acara dalam JavaScript?

Linda Hamilton
Lepaskan: 2024-11-06 04:22:02
asal
709 orang telah melayarinya

How Can I Preserve Context in Event Handler Callbacks in JavaScript?

Memelihara Konteks dalam Panggilan Balik Pengendali Acara: Teknik 'self = this'

Dalam JavaScript, kaedah contoh sebagai panggilan balik pengendali acara boleh menyebabkan skop perubahan. Seperti yang ditunjukkan oleh kod yang disediakan, pengikatan peristiwa memerlukan pembolehubah untuk mengekalkan konteks panggilan, yang membawa kepada tugasan "var self = this".

Walaupun berfungsi, pendekatan ini menimbulkan kebimbangan tentang keberkesanannya. Penyelesaian yang lebih umum menangani masalah teras: menyalurkan pembolehubah dalam fungsi terbenam.

Dalam JavaScript, penutupan membenarkan akses kepada pembolehubah luaran. Walau bagaimanapun, pembolehubah pseudo seperti "ini" dan "argumen" memerlukan pengendalian yang teliti. Menetapkan mereka kepada alias dalam fungsi induk memastikan ketersediaannya dalam fungsi terbenam.

Contoh

Untuk menggunakan "ini" dalam fungsi terbenam, tetapkan ia kepada pembolehubah dan gunakan alias sebaliknya:

var that = this;

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

Pendekatan ini tidak terhad kepada "ini"; "argumen" memerlukan layanan yang sama untuk memastikan akses yang konsisten dalam fungsi terbenam.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengekalkan Konteks dalam Panggilan Balik 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