Rumah > hujung hadapan web > tutorial js > Mengapa JavaScript bind() Penting untuk Mengawal \'ini\' dalam Functions?

Mengapa JavaScript bind() Penting untuk Mengawal \'ini\' dalam Functions?

Mary-Kate Olsen
Lepaskan: 2024-10-24 13:32:02
asal
866 orang telah melayarinya

Why is JavaScript bind() Essential for Controlling

Mengapa JavaScript bind() Diperlukan?

Dalam JavaScript, "ini" merujuk kepada objek yang memiliki kod yang sedang dilaksanakan. Walau bagaimanapun, apabila fungsi diluluskan sebagai panggilan balik atau pengendali acara, persekitaran panggilan boleh berbeza daripada yang dimaksudkan. Ini membawa kepada masalah "ini" merujuk kepada objek global dan bukannya objek yang dimaksudkan.

Mengatasi Masalah dengan Bind

Kaedah bind() JavaScript membenarkan anda untuk menetapkan nilai "ini" secara eksplisit dalam fungsi. Dengan mengikat fungsi pada objek tertentu, anda memastikan bahawa apabila fungsi dipanggil, "ini" akan merujuk kepada objek itu.

Contoh:

<code class="js">var myName = {
  name: "Tom",
  getName: function() {
    return this.name;
  }
};

var storeMyName2 = myName.getName.bind(myName);
console.log(storeMyName2()); // Output: "Tom" (correct)</code>
Salin selepas log masuk

Dengan mengikat getName() pada myName, rujukan kepada "ini" dikekalkan dan fungsi mengembalikan "Tom."

Penyelesaian Alternatif: Contoh 3

Dalam contoh 3, storeMyName3 diberikan hasil daripada memanggil myName.getName() serta-merta. Ini bermakna bahawa nilai storeMyName3 ialah rentetan, bukan fungsi. Oleh itu, tiada isu dengan nilai "ini" kerana nilai ditentukan pada masa pelaksanaan, bukan apabila fungsi dipanggil.

Perbandingan Bind() dan Contoh 3

Bind() dan contoh 3 mencapai matlamat yang sama, tetapi melalui mekanisme yang berbeza. Bind() membolehkan anda menetapkan konteks fungsi tanpa menggunakannya serta-merta, manakala contoh 3 menetapkan konteks dengan menggunakan fungsi dan menyimpan hasilnya.

Atas ialah kandungan terperinci Mengapa JavaScript bind() Penting untuk Mengawal \'ini\' dalam Functions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
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