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);
Задание 1

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.