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:
<input id="elem" value="text">
Wacha tupate kiungo cha kiingilio hiki na tukiandika
katika kigezo elem:
let elem = document.querySelector('#elem');
Wacha sasa tutengeneze kitendo func,
ndani yake tutaonyesha this.value:
function 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:
let elem = document.querySelector('#elem');
function func() {
console.log(this.value); // itaonyesha value ya kiingilio
}
func.call(elem);
Kitendo kimetolewa:
function func() {
console.log(this.value);
}
Viingilio vitano vimetolewa:
<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.