Kufungia Muktadha Kupitia Njia bind katika JavaScript

Njia inayofuata bind inaruhusu kufungia muktadha kwa utendakazi milele. Kwa matokeo yake njia hii inarudisha utendakazi mpya, ambayo ndani yake this itakuwa na thamani iliyowekwa kwa ukali.

Tuangalie kwa mfano.

Tuchukulie tuna kichagizo (input):

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

Tuchukulie kiunga cha kichagizo hiki kimeandikwa kwenye kutofautisha elem:

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

Tuchukulie pia tuna utendakazi ufuatao func:

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

Wacha kwa kutumia bind tutengeneze utendakazi mpya, ambao utakuwa nakala ya utendakazi func, lakini this ndani yake itakuwa sawa na elem daima:

javascriptlet newFunc = func.bind(elem);

Sasa katika kutofautisha newFunc kuna utendakazi. Wacha tuitanye, tukipeleka kigezo cha kwanza '1', na cha pili '2' (nakukumbusha, kwamba elem ina kichagizo chenye value, yenye thamani 'text'):

javascriptnewFunc('1', '2');

Wacha tukusanye yote pamoja:

javascriptlet elem = document.getElementById('elem');

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

let newFunc = func.bind(elem);
newFunc('1', '2'); // itatoa 'text12'

Si lazima kuandika matokeo ya kazi ya bind kwenye utendakazi mpya newFunc, inatosha kubadilisha func. Baada ya hapo func itakuwa utendakazi kama ulivyokuwa, lakini kwa this iliyofungiwa kwa ukali:

javascriptfunc = func.bind(elem);
Задание 1

Tuchukulie kuna msimbo ufuatao:

html<input id="elem" value="hello">
javascriptlet elem = document.getElementById('elem');

function func(name, surname) {
  console.log(this.value + ', ' + name + ' ' + surname);
}

// hapa andika utungaji na bind()

func('John', 'Smit'); // hapa inatakiwa itoe 'hello, John Smit'
func('Eric', 'Luis'); // hapa inatakiwa itoe 'hello, Eric Luis'

Andika hapa panapoonyeshwa utungaji na njia bind ili this ndani ya utendakazi func uelekeze kwenye kichagizo kutoka kwenye kutofautisha elem daima.