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):
<input id="elem" value="text">
Tuchukulie kiunga cha kichagizo hiki kimeandikwa kwenye kutofautisha
elem:
let elem = document.querySelector('#elem');
Tuchukulie pia tuna utendakazi ufuatao
func:
function 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:
let 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'):
newFunc('1', '2');
Wacha tukusanye yote pamoja:
let 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:
func = func.bind(elem);
Tuchukulie kuna msimbo ufuatao:
<input id="elem" value="hello">
let 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.