Методи bind

Методи bind барои пайваст кардани контекст ба функсия аст. Ҳамчун параметри аввал бояд контекстро гузоред, ва параметрҳои баъдина – параметрҳои функсия мебошанд. Метод функсияи наверо бармегардонад, ки дар дохили он this ба контексти додашуда баробар хоҳад буд.

Синтаксис

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

Намуна

Фарз мекунем, ки мо як воридкунак (input) дорем:

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,
    ки функсияро бо контекст фаро мэхонад