⊗jsPmCxBM 443 of 505 menu

Kontekstin sitominen bind-metodilla JavaScriptissä

Seuraava metodi bind mahdollistaa kontekstin pysyvän sitomisen funktioon. Tämä metodi palauttaa uuden funktion, jossa this on tiukasti asetettu arvo.

Katsotaanpa esimerkkiä.

Oletetaan, että meillä on syötekenttä:

<input id="elem" value="text">

Oletetaan, että linkki tähän syötekenttään on tallennettu muuttujaan elem:

let elem = document.querySelector('#elem');

Oletetaan myös, että meillä on seuraava funktio func:

function 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ä kuin elem:

let newFunc = func.bind(elem);

Nyt muuttujassa newFunc on funktio. Kutsutaan sitä välittämällä ensimmäiseen parametriin '1' ja toiseen '2' (muistutan, että elem sisältää syötekentän, jonka value on 'text'):

newFunc('1', '2');

Kootaan kaikki yhteen:

let elem = document.getElementById('elem'); function func(param1, param2) { console.log(this.value + param1 + param2); } let newFunc = func.bind(elem); newFunc('1', '2'); // tulostaa 'text12'

Ei ole välttämätöntä tallentaa bind:in tulosta uuteen funktioon newFunc, voi yksinkertaisesti korvata func. Sen jälkeen func on sama funktio kuin ennen, mutta tiukasti sidottu this:

func = func.bind(elem);

Oletetaan seuraava koodi:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // kirjoita tähän rakenne bind():lla func('John', 'Smit'); // tänne pitäisi tulostua 'hello, John Smit' func('Eric', 'Luis'); // tänne pitäisi tulostua 'hello, Eric Luis'

Kirjoita osoitettuun kohtaan rakenne metodilla bind siten, että this funktion func sisällä viittaa aina muuttujan elem syötekenttään.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää