Metodi bind
Metodi bind sallii kontekstin sitomisen funktioon.
Ensimmäisenä parametrina tulee välittää
konteksti, ja seuraavina parametreina - funktion parametrit.
Metodi palauttaa uuden funktion,
jossa this on yhtä suuri kuin välitetty
konteksti.
Syntaksi
javascriptfunktio.bind(konteksti, parametri1, parametri2...);
Esimerkki
Oletetaan, että meillä on syötekenttä:
html<input id="elem" value="text">
Oletetaan, että linkki tähän syötekenttään on tallennettu muuttujaan
elem:
javascriptlet elem = document.querySelector('#elem');
Oletetaan, että meillä on myös seuraava funktio
func:
javascriptfunction func(param1, param2) {
console.log(this.value + param1 + param2);
}
Tehdään bind:n avulla uusi
funktio, joka on kopio funktiosta func,
mutta this siinä on aina yhtä suuri kuin elem:
javascriptlet newFunc = func.bind(elem);
Nyt muuttujassa newFunc on
funktio. Kutsutaan sitä välittämällä ensimmäiseen
parametriin '1' ja toiseen '2':
javascriptnewFunc('1', '2');
Kootaan kaikki yhteen:
javascriptlet elem = document.getElementById('elem');
function func(param1, param2) {
console.log(this.value + param1 + param2);
}
let newFunc = func.bind(elem);
newFunc('1', '2'); // tulostaa 'text12'
Esimerkki
Ei ole pakko tallentaa
bind:in tulosta
uuteen funktioon newFunc,
voi yksinkertaisesti korvata func:
javascriptlet func = func.bind(elem);