JavaScript-də call metodu ilə kontekstin bağlanması
Beləliklə, biz this-in əslində necə işlədiyini araşdırdıq. Gəlin indi bir funksiyanın hansı kontekstdə çağırıldığını məcburi şəkildə təyin etməyə imkan verən metodlara nəzər salaq (yəni məcburi olaraq this-in nəyə bərabər olduğunu deməyə imkan verən).
Araşdıracağımız ilk metod call adlanır. Gəlin onun işini bir nümunə üzərində görək. Tutaq ki, bizim bir inputumuz var:
<input id="elem" value="text">
Gəlin bu inputa istinad əldə edək və onu elem dəyişəninə yazaq:
let elem = document.querySelector('#elem');
Gəlin indi func funksiyasını edək, onun daxilində this.value çıxaraq:
function func() {
console.log(this.value);
}
Funksiyamız hələ ki, this-in nəyə istinad etdiyini bilmir. Əgər biz onu addEventListener vasitəsilə bağlasaydıq, o zaman bəli. Amma biz bunu etməyəcəyik. Əvəzində biz sadəcə funksiyamızı çağıracıq və ona this-in elem-ə bərabər olması lazım olduğunu deyəcəyik.
Bu belə edilir: func.call(elem). Bu kod func() kimi sadə funksiya çağırışına ekvivalentdir, sadəcə this-in elem-ə bərabər olması şərti ilə.
Beləliklə, call metodunun sintaksisi belədir: funksiya.call(obyekt). Gəlin hər şeyi bir yerə yığaq:
let elem = document.querySelector('#elem');
function func() {
console.log(this.value); // inputun value-nu çıxarar
}
func.call(elem);
Funksiya verilib:
function func() {
console.log(this.value);
}
Üç input verilib:
<input id="elem1" value="text1">
<input id="elem2" value="text2">
<input id="elem3" value="text3">
call metodu və func funksiyası vasitəsilə hər bir inputun value-nı ekranda çıxarın.