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

Katso myös

  • metodi call,
    joka kutsuu funktiota kontekstin kanssa
  • metodi apply,
    joka kutsuu funktiota kontekstin kanssa