JavaScript'те call методу аркылу контекстти байлоо
Ошентип, биз this чынында эмне үчүн иштээрин түшүндук. Эми функциянын кайсы контекстте (башкача айтканда, this эмнеге барабар болот деп) чакырылаарын милдеттүү түрдө көрсөтүүгө мүмкүндүк берген методдорго токтололу.
Биз карап чыга турган биринчи метод call деп аталат. Анын иштешин мисал менен карап көрөлү. Бизде input (киргизүү талаасы) бар болсун:
<input id="elem" value="text">
Келгиле, бул input'ко шилтеме алып, аны elem өзгөрмөсүнө сактайлы:
let elem = document.querySelector('#elem');
Эми func функциясын жасайлы, анын ичинде this.value чыгаралы:
function func() {
console.log(this.value);
}
Биздин функция азырынча this кайда көрсөтөрүн билбейт. Эгерде биз аны addEventListener аркылу байласак, анда билер эле. Бирок биз муну кылбайбыз. Анын ордуна биз функциябызды жөн гап чакырып, ага this elem'ге барабар болушу керектигин айтабыз.
Муну мындай кылып жасайбыз: func.call(elem). Бул код функцияны жөн эле func() деп чакырууга барабар, бирок мындай шарт менен: this elem'ге барабар.
Ошентип, call методунун синтаксиси төмөнкүдөй: функция.call(объект). Келгиле, баарын бир жерге топтойлу:
let elem = document.querySelector('#elem');
function func() {
console.log(this.value); // input'тун value'sун чыгарат
}
func.call(elem);
Функция берилди:
function func() {
console.log(this.value);
}
Үч input (киргизүү талаасы) берилди:
<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
call методу менен func функциясын колдонуп, ар бир input'тун value'сын экранга чыгарыңыз.