Rumah >hujung hadapan web >tutorial js >Javascript `call()` & `apply()` vs. `bind()`: Bilakah Anda Harus Menggunakan Yang Mana?

Javascript `call()` & `apply()` vs. `bind()`: Bilakah Anda Harus Menggunakan Yang Mana?

Linda Hamilton
Linda Hamiltonasal
2024-12-02 00:07:16229semak imbas

Javascript `call()` & `apply()` vs. `bind()`: When Should You Use Which?

Javascript: call() & apply() vs bind() Revisited

Semasa panggilan() dan apply() membenarkan kami menukar konteks fungsi dan lulus hujah secara manual atau sebagai tatasusunan, kaedah bind() menawarkan yang unik pendekatan.

Bila Menggunakan bind()

Bind amat berguna apabila anda perlu mencipta fungsi dengan konteks yang telah ditetapkan untuk pelaksanaan kemudian. Tidak seperti call() atau apply(), yang memanggil fungsi dengan segera, bind mengembalikan fungsi baharu dengan set konteks yang ditentukan.

Contoh berikut menunjukkan perbezaan:

var obj = {
  x: 81,
  getX: function() {
    return this.x;
  }
};

alert(obj.getX.bind(obj)()); // 81
alert(obj.getX.call(obj)); // 81
alert(obj.getX.apply(obj)); // 81

Dalam ini contoh, bind() mencipta fungsi baharu yang, apabila dilaksanakan, akan sentiasa menetapkan konteksnya kepada objek obj. Ini amat berharga dalam pendengar acara, di mana konteks fungsi boleh menjadi samar-samar.

Kes Penggunaan

  • Pendengar Acara: Tetapkan konteks pengendali acara untuk mengekalkan rujukan objek yang betul dalam panggilan balik async.
  • Async Panggilan Balik: Kekalkan konteks fungsi asal dalam panggilan balik Node.js async.
  • Kari: Cipta fungsi baharu dengan set argumen tetap sambil mengekalkan asal fungsi konteks.

Contoh:

function MyObject(element) {
  this.elm = element;

  element.addEventListener('click', this.onClick.bind(this), false);
}

MyObject.prototype.onClick = function(e) {
  var t = this; // do something with [t]...
  // Without bind, the context of this function would be different.
};

Kesimpulan

Bind membolehkan anda mencipta fungsi dengan konteks yang telah ditetapkan , menjadikannya amat berguna dalam pengendalian acara, pengaturcaraan async dan senario lain yang mengekalkan konteks adalah penting. Semasa call() dan apply() menyediakan seruan fungsi segera, bind mengembalikan fungsi untuk pelaksanaan kemudian dengan konteks tetap.

Atas ialah kandungan terperinci Javascript `call()` & `apply()` vs. `bind()`: Bilakah Anda Harus Menggunakan Yang Mana?. 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