Метад bind

Метад bind прывязаць кантэкст да функцыі. У якасці першага параметра варта перадаваць кантэкст, а наступнымі параметрамі - параметры функцыі. Метад вяртае новую функцыю, унутры якой this будзе роўным перададзенаму кантэксту.

Сінтаксіс

javascriptфункцыя.bind(кантэкст, параметр1, параметр2...);

Прыклад

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

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

Хай спасылка на гэты інпут запісана ў зменную elem:

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

Хай у нас таксама ёсць наступная функцыя func:

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

Давайце з дапамогай bind зробім новую функцыю, якая будзе копіяй функцыі func, але this ў ёй заўсёды будзе роўны elem:

javascriptlet newFunc = func.bind(elem);

Цяпер у зменнай newFunc ляжыць функцыя. Давайце выклічэм яе, перадаўшы ў першы параметр '1', а ў другі '2':

javascriptnewFunc('1', '2');

Давайце саберем усё разам:

javascriptlet 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:

javascriptlet func = func.bind(elem);

Глядзіце таксама

  • метад call,
    які выклікае функцыю з кантэкстам
  • метад apply,
    які выклікае функцыю з кантэкстам