⊗jsPmCxBM 443 of 505 menu

Viaženie kontextu pomocou metódy bind v JavaScripte

Ďalšia metóda bind umožňuje natrvalo viazať kontext k funkcii. Svojím výsledkom táto metóda vráti novú funkciu, vnútri ktorej this bude mať pevne nastavenú hodnotu.

Pozrime sa na príklad.

Majme input:

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

Nech odkaz na tento input je uložený v premennej elem:

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

Nech máme aj nasledujúcu funkciu func:

function func(param1, param2) { console.log(this.value + param1 + param2); }

Pomocou bind vytvorme novú funkciu, ktorá bude kópiou funkcie func, ale this v nej bude vždy rovný elem:

let newFunc = func.bind(elem);

Teraz v premennej newFunc leží funkcia. Zavolajme ju, pričom do prvého parametra pošleme '1' a do druhého '2' (pripomínam, že v elem je input s value, rovným 'text'):

newFunc('1', '2');

Poďme to dať dokopy:

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

Nie je nevyhnutné zapisovať výsledok práce bind do novej funkcie newFunc, stačí prepísať func. Po tom func bude rovnakou funkciou, ako bola, ale s pevne zviazaným this:

func = func.bind(elem);

Nech je daný nasledujúci kód:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // tu napíšte konštrukciu s bind() func('John', 'Smit'); // tu by malo vypísať 'hello, John Smit' func('Eric', 'Luis'); // tu by malo vypísať 'hello, Eric Luis'

Napíšte na uvedené miesto konštrukciu s metódou bind tak, aby this vnútri funkcie func vždy ukazoval na input z premennej elem.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť