Метод 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,
    који позива функцију са контекстом