Rumah >hujung hadapan web >tutorial js >Javascript `call()` & `apply()` vs. `bind()`: Bilakah Anda Harus Menggunakan Yang Mana?
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
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!