⊗jsPmCxBM 443 of 505 menu

Legarea contextului prin metoda bind în JavaScript

Următoarea metodă bind permite legarea contextului la o funcție permanent. Această metodă returnează o nouă funcție, în interiorul căreia this va avea o valoare fixată rigid.

Să ne uităm la un exemplu.

Să presupunem că avem un câmp de introducere:

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

Să presupunem că referința la acest câmp de introducere este stocată în variabila elem:

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

Să presupunem că avem și următoarea funcție func:

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

Să folosim bind pentru a crea o nouă funcție, care va fi o copie a funcției func, dar this în ea va fi întotdeauna egal cu elem:

let newFunc = func.bind(elem);

Acum, în variabila newFunc se află o funcție. Să o apelăm, transmitând primul parametru '1', iar al doilea '2' (reamintesc că în elem se află câmpul de introducere cu value, egal cu 'text'):

newFunc('1', '2');

Să punem totul împreună:

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

Nu este obligatoriu să stochezi rezultatul lui bind într-o nouă funcție newFunc, poți pur și simplu să suprascrii func. După aceasta, func va fi aceeași funcție ca și înainte, dar cu this legat rigid:

func = func.bind(elem);

Să presupunem că este dat următorul cod:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // scrieți aici construcția cu bind() func('John', 'Smit'); // aici ar trebui să afișeze 'hello, John Smit' func('Eric', 'Luis'); // aici ar trebui să afișeze 'hello, Eric Luis'

Scrieți în locul indicat construcția cu metoda bind astfel încât this în interiorul funcției func să indice întotdeauna către câmpul de introducere din variabila elem.

Română
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Folosim cookie pentru funcționarea site-ului, analiză și personalizare. Prelucrarea datelor are loc în conformitate cu Politica de confidențialitate.
acceptă toate configurează respinge