Kufungia Mazingira Kupitia Njia call katika JavaScript
Kwa hivyo, tumechambua jinsi
this inavyofanya kazi kweli.
Wacha sasa tuzingatie njia
zinazoruhusu kubainisha kwa lazima,
ni katika mazingira gani kitendo kinapoitwa (yaani
kusema kwa lazima, this ni sawa na nini).
Njia ya kwanza tutakayochambua,
inaitwa call. Wacha tuangalie
kazi yake kwa kutumia mfano. Hebu tuseme tuna kiingilio:
html<input id="elem" value="text">
Wacha tupate kiungo cha kiingilio hiki na tukiandika
katika kigezo elem:
javascriptlet elem = document.querySelector('#elem');
Wacha sasa tutengeneze kitendo func,
ndani yake tutaonyesha this.value:
javascriptfunction func() {
console.log(this.value);
}
Kwa sasa kitendo chetu hakijui, this
inakirejelea nini.
Ingetakuwa vizuri, kama tungeliifunga
kupitia addEventListener, basi ndio.
Lakini hatutafanya hivyo. Badala yake tutaitta
kitendo chetu, tukiambia kuwa this
lazima iwe sawa na elem.
Hii inafanywa hivi: func.call(elem).
Msimbo huu ni sawa na kuitta kitendo
func kwa kawaida hivi: func(),
lakini kwa sharti kwamba this ni sawa na elem.
Kwa hivyo, sintaksia ya njia call ni: kitendo.call(kitu).
Wacha tukusanye
yote pamoja:
javascriptlet elem = document.querySelector('#elem');
function func() {
console.log(this.value); // itaonyesha value ya kiingilio
}
func.call(elem);
Kitendo kimetolewa:
javascriptfunction func() {
console.log(this.value);
}
Viingilio vitano vimetolewa:
html<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
Kwa kutumia njia call na kitendo func
onyesha kwenye skrini value ya kila kiingilio.