JavaScript-də bind metodu ilə kontekstin bağlanması

Növbəti metod bind konteksti funksiyaya həmişəlik bağlamağa imkan verir. Bu metod öz nəticəsi olaraq yeni bir funksiya qaytarır, onun daxilində this sərt şəkildə təyin edilmiş qiymətə malik olacaq.

Gəlin nümunə üzərində baxaq.

Tutaq ki, bizim bir inputumuz var:

html<input id="elem" value="text">

Tutaq ki, bu inputa istinad dəyişəndə elem yazılıb:

javascriptlet elem = document.querySelector('#elem');

Tutaq ki, bizim həmçinin aşağıdakı funksiyamız var func:

javascriptfunction func(param1, param2) {
  console.log(this.value + param1 + param2);
}

Gəlin bind köməyi ilə yeni funksiya düzəldək, hansı ki, func funksiyasının surəti olacaq, amma this onun daxilində həmişə elem bərabər olacaq:

javascriptlet newFunc = func.bind(elem);

İndi newFunc dəyişənində funksiya yerləşir. Gəlin onu çağıraq, birinci parametrə '1', ikinciyə isə '2' ötürək (xatırladım ki, elem-də value-sü 'text' olan input yerləşir):

javascriptnewFunc('1', '2');

Gəlin hamısını bir yerə yığaq:

javascriptlet elem = document.getElementById('elem');

function func(param1, param2) {
  console.log(this.value + param1 + param2);
}

let newFunc = func.bind(elem);
newFunc('1', '2'); // çıxardacaq 'text12'

bind işinin nəticəsini yeni funksiyada newFunc yazmaq mütləq deyil, sadəcə func-i yenidən yaza bilərsiniz. Bundan sonra func əvvəl olduğu kimi eyni funksiya olacaq, amma sərt bağlanmış this ilə:

javascriptfunc = func.bind(elem);
Задание 1

Tutaq ki, aşağıdakı kod verilib:

html<input id="elem" value="hello">
javascriptlet elem = document.getElementById('elem');

function func(name, surname) {
  console.log(this.value + ', ' + name + ' ' + surname);
}

// bura bind() ilə konstruksiya yazın

func('John', 'Smit'); // bura çıxarmalıdır 'hello, John Smit'
func('Eric', 'Luis'); // bura çıxarmalıdır 'hello, Eric Luis'

Göstərilən yerdə bind metodu ilə konstruksiya yazın ki, func funksiyasının daxilində this həmişə elem dəyişənindən olan inputu göstərsin.