JavaScript-de this-iň üstünligi

Öň aýdylanlardan this-iň aýratyn üstünligi heniz anyk däl. Sebäbi, işleýji funksiýanyň içinde bize element elýeterli bolar – sebäbi elem üýtgeýjisi biziň func funksiýamyz üçin global bolar:

javascriptlet elem = document.querySelector('#elem');
elem.addEventListener('click', func);

function func() {
  // bu ýerde bize element bilen elem üýtgeýjisi elýeterli
}

We, this-iň mazmunyny we elem üýtgeýjisiniň mazmunyny biziň ýagdaýymyzda deňdigini ýada salmak kyn däl:

javascriptlet elem = document.querySelector('#elem');
elem.addEventListener('click', func);

function func() {
  console.log(elem === this); // true çykarar
}

this-iň aýratyn üstünligi nämede? Ol bize birnäçe elementimiz bar bolsa we her biri bir funksiýa bilen baglanyşykly bolsa görkezilýär.

Mysalda göreli. Bizde 3 düwme bolsun:

html<input id="button1" type="submit" value="text1">
<input id="button2" type="submit" value="text2">
<input id="button3" type="submit" value="text3">

Olara çykgytlary üýtgeýjilere alalyň:

javascriptlet button1 = document.querySelector('#button1');
let button2 = document.querySelector('#button2');
let button3 = document.querySelector('#button3');

Bu düwmeleri bir funksiýa bilen baglalyň:

javascriptbutton1.addEventListener('click', func);
button2.addEventListener('click', func);
button3.addEventListener('click', func);

Funksiýanyň içinde bolsa this.value çykaryp görkezeris:

javascriptfunction func() {
  console.log(this.value);
}

Netijede, biziň üç düwmämiz bar. Her düwmä basmak func funksiýasynyň çagyrylmagyna getirer. Bu ýagdaýda her basylyşda this, waka bolan düwme üçin çykgydy saklar.

Ýagny her basylyş konsola basylan düwmeniň value-syny çykarar, ýöne muny bir funksiýa func eder! this ulanmagyň üstünligi şonda.

Задание 1

Belli bir tekster bilen 5 abzas berlen. Islendik abzasa basylanyňda, onuň tekstiňiň ahyryna sora belgisini ýazyň.

Задание 2

Belli bir sanlar ýazylan 3 input berlen. Islendik inputda fokus ýitirilende, onda duran sany kwadrata göteriň.