Povezovanje konteksta z metodo bind v JavaScript
Naslednja metoda bind omogoča trajno
povezovanje konteksta s funkcijo. Kot rezultat
ta metoda vrne novo funkcijo, znotraj katere
bo this imel togo določeno vrednost.
Poglejmo si primer.
Recimo, da imamo vnosno polje:
<input id="elem" value="text">
Recimo, da je povezava do tega vnosnega polja shranjena v spremenljivko
elem:
let elem = document.querySelector('#elem');
Recimo, da imamo tudi naslednjo funkcijo
func:
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
Uporabimo bind za ustvarjanje nove
funkcije, ki bo kopija funkcije func,
vendar bo this v njej vedno enak elem:
let newFunc = func.bind(elem);
Zdaj v spremenljivki newFunc leži
funkcija. Pokličimo jo in podajmo prvi
parameter '1' in drugi '2'
(opomnik: v elem leži vnosno polje z value,
enakim 'text'):
newFunc('1', '2');
Povežimo vse skupaj:
let elem = document.getElementById('elem');
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
let newFunc = func.bind(elem);
newFunc('1', '2'); // izpiše 'text12'
Ni nujno, da rezultat delovanja
bind zapišemo v novo funkcijo newFunc,
lahko preprosto prepišemo func. Po
tem bo func enaka funkcija kot
prej, vendar s togo povezanim this:
func = func.bind(elem);
Recimo, da je dana naslednja koda:
<input id="elem" value="hello">
let elem = document.getElementById('elem');
function func(name, surname) {
console.log(this.value + ', ' + name + ' ' + surname);
}
// tukaj napišite konstrukcijo z bind()
func('John', 'Smit'); // tukaj naj izpiše 'hello, John Smit'
func('Eric', 'Luis'); // tukaj naj izpiše 'hello, Eric Luis'
Napišite na označenem mestu konstrukcijo z
metodo bind tako, da bo this znotraj
funkcije func vedno kazal na vnosno polje
iz spremenljivke elem.