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
Mary-Kate Olsenasal
2024-10-24 13:32:02865semak imbas

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>

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!

Kenyataan:
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