Перавага this у JavaScript
З сказанага раней пакуль не відавочна асаблівая
перавага this. Аднуль ўнутры функцыі-апрацоўшчыка
і так будзе даступны наш элемент - аднуль пераменная
elem будзе глабальнай для нашай функцыі
func:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
// тут даступная пераменная elem з нашым элементам
}
І, няцяжка здагадацца, што змесціва this
і змесціва пераменнай elem у нашым
выпадку роўныя:
let elem = document.querySelector('#elem');
elem.addEventListener('click', func);
function func() {
console.log(elem === this); // выведе true
}
У чым жа асаблівая перавага this?
Яна праяўляецца, калі ў нас некалькі элементаў,
і да кожнага прывязана адна і тая ж функцыя.
Паглядзім на прыкладзе. Хай у нас ёсць 3
кнопкі:
<input id="button1" type="submit" value="text1">
<input id="button2" type="submit" value="text2">
<input id="button3" type="submit" value="text3">
Атрымаем спасылкі на іх у пераменныя:
let button1 = document.querySelector('#button1');
let button2 = document.querySelector('#button2');
let button3 = document.querySelector('#button3');
Прывязам да гэтых кнопак адну і тую ж функцыю:
button1.addEventListener('click', func);
button2.addEventListener('click', func);
button3.addEventListener('click', func);
А ўнутры функцыі будзем выводзіць this.value:
function func() {
console.log(this.value);
}
Атрымаецца, што ў нас ёсць тры кнопкі. Націсканне
на кожную кнопку будзе прыводзіць да выкліку
функцыі func. Пры гэтым пры кожным
кліку this будзе ўтрымліваць спасылку
на тую кнопку, у якой адбылася падзея.
Гэта значыць кожнае націсканне будзе выводзіць у кансоль
value той кнопкі, на якой адбылося
націсканне, але рабіць гэта будзе адна і тая ж
функцыя func! Вось у чым перавага
выкарыстання this.
Даны 5 абзацаў з якімі-тэ тэкстамі.
Па кліку на любы абзац запішыце ў канец
яго тэксту клічнік.
Даны 3 інпута, у якіх запісаныя
якія-тэ лікі. Па страце фокусу ў любым
з інпутаў узвядзіце якое стаіць у ім лік
у квадрат.