⊗jsPmCxBM 443 of 505 menu

Прывязванне кантэксту праз метад bind у JavaScript

Наступны метад bind дазваляе назаўжды прывязаць кантэкст да функцыі. Сваім вынікам гэты метад вяртае новую функцыю, унутры якой this будзе мець жорстка зададзенае значэнне.

Давайце паглядзім на прыкладзе.

Хай у нас ёсць інпут:

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

Хай спасылка на гэты інпут запісаная ў зменную 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 ляжыць інпут з 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 заўсёды паказваў на інпут з зменнай 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
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць