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
Lepaskan: 2024-12-02 00:07:16
asal
341 orang telah melayarinya

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
Salin selepas log masuk

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.
};
Salin selepas log masuk

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