Dari dokumen MDN pada Function.prototype.bind()
:
Metode bind () membuat fungsi baru yang, ketika dipanggil, kata kunci ini disetel ke nilai yang disediakan, dengan urutan argumen tertentu sebelum yang disediakan ketika fungsi baru dipanggil.
Jadi, apa artinya itu ?!
Baiklah, mari kita fungsi yang terlihat seperti ini:
var logProp = function(prop) {
console.log(this[prop]);
};
Sekarang, mari kita ambil objek yang terlihat seperti ini:
var Obj = {
x : 5,
y : 10
};
Kita dapat mengikat fungsi kita ke objek kita seperti ini:
Obj.log = logProp.bind(Obj);
Sekarang, kita dapat menjalankan Obj.log
di mana saja dalam kode kita:
Obj.log('x'); // Output : 5
Obj.log('y'); // Output : 10
Ini berfungsi, karena kita mengikat nilai this
ke objek kita Obj
.
Di mana itu benar-benar menarik, adalah ketika Anda tidak hanya mengikat nilai this
, tetapi juga untuk argumennya prop
:
Obj.logX = logProp.bind(Obj, 'x');
Obj.logY = logProp.bind(Obj, 'y');
Kita sekarang dapat melakukan ini:
Obj.logX(); // Output : 5
Obj.logY(); // Output : 10
Berbeda dengan dengan Obj.log
, kita tidak harus lulus x
atau y
, karena kita melewati nilai-nilai itu ketika kita melakukan ikatan kita.
select = document.querySelector.bind(document)