⊗jsPmCxBM 443 of 505 menu

Свързване на контекст чрез метода bind в JavaScript

Следващият метод bind позволява да се свърже контекстът към функция за постоянно. Като резултат този метод връща нова функция, вътре в която this ще има строго зададена стойност.

Нека разгледаме с пример.

Нека имаме input поле:

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

Нека препратката към това input поле е записана в променливата elem:

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

Нека имаме и следната функция func:

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

Нека с помощта на bind създадем нова функция, която ще бъде копие на функцията func, но this в нея винаги ще бъде равен на elem:

let newFunc = func.bind(elem);

Сега в променливата newFunc се намира функция. Нека я извикаме, като подадем първия параметр '1', а втория '2' (напомням, че в elem се намира input поле с value, равен на 'text'):

newFunc('1', '2');

Нека съберем всичко заедно:

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

Не е задължително резултатът от работата на bind да се записва в нова функция newFunc, може просто да се презапише func. След това func ще бъде същата функция, каквато е била, но със строго свързан this:

func = func.bind(elem);

Нека е даден следният код:

<input id="elem" value="hello"> let elem = document.getElementById('elem'); function func(name, surname) { console.log(this.value + ', ' + name + ' ' + surname); } // тук напишете конструкция с bind() func('John', 'Smit'); // тук трябва да изведе 'hello, John Smit' func('Eric', 'Luis'); // тук трябва да изведе 'hello, Eric Luis'

Напишете на посленото място конструкция с метода bind така, че this вътре във функцията func винаги да сочи към input полето от променливата elem.

Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне