⊗jsPmCxBM 443 of 505 menu

Wiązanie kontekstu za pomocą metody bind w JavaScript

Następna metoda bind pozwala na trwałe powiązanie kontekstu z funkcją. Wynikiem działania tej metody jest nowa funkcja, wewnątrz której this będzie miało sztywno przypisaną wartość.

Spójrzmy na przykład.

Załóżmy, że mamy input:

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

Załóżmy, że referencja do tego inputa jest zapisana w zmiennej elem:

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

Załóżmy, że mamy również następującą funkcję func:

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

Użyjmy bind, aby stworzyć nową funkcję, która będzie kopią funkcji func, ale this w niej zawsze będzie równe elem:

let newFunc = func.bind(elem);

Teraz w zmiennej newFunc znajduje się funkcja. Wywołajmy ją, przekazując w pierwszym parametrze '1', a w drugim '2' (przypominam, że w elem znajduje się input z value, równym 'text'):

newFunc('1', '2');

Złóżmy wszystko w całość:

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

Nie jest konieczne zapisywanie wyniku działania bind w nowej funkcji newFunc, można po prostu nadpisać func. Po tym func będzie taką samą funkcją, jak była, ale z sztywno związanym this:

func = func.bind(elem);

Załóżmy, że dany jest następujący kod:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // tutaj napisz konstrukcję z bind() func('John', 'Smit'); // tutaj powinno wypisać 'hello, John Smit' func('Eric', 'Luis'); // tutaj powinno wypisać 'hello, Eric Luis'

Napisz w wskazanym miejscu konstrukcję z metodą bind tak, aby this wewnątrz funkcji func zawsze wskazywał na input ze zmiennej elem.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć