⊗jsPmCxInr 433 of 505 menu

Асновы працы з кантэкстам у JavaScript

Няхай у нас ёсць якая-небудзь функцыя func, унутры якой выкарыстоўваецца this:

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

На што паказвае this у гэтай функцыі? А мы не ведаем. І JavaScript не ведае. І сама функцыя не ведае. Гэта значыць у момант стварэння функцыі тое, на што менавіта паказвае this, не вызначана. І вызначыцца гэта толькі тады, калі гэтая функцыя будзе выклікана.

Няхай у нас ёсць які-небудзь інпут:

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

Прывязам да гэтага інпута нашу функцыю func так, каб яна выканалася па страце фокусу інпутам. Цяпер у момант выканання функцыі this будзе паказваць на наш інпут:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // па страце фокусу вывядзе 'text' }

Але ж у нас можа быць не адзін інпут, а некалькі:

<input id="elem1" value="text1"> <input id="elem2" value="text2">

І да кожнага з гэтых інпутаў мы можам прывязаць нашу функцыю func. У гэтым выпадку для першага элемента this у момант выкліку функцыі будзе паказваць на яго, а для другога - на яго.

На практыцы гэта значыць, што this унутры функцыі залежыць ад таго, на якім з інпутаў мы страцілі фокус:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // вывядзе альбо 'text1', альбо 'text2' }

Наогул кажучы, такая асаблівасць this вельмі зручная - мы ствараем усяго адну функцыю і прывязваем яе да любой колькасці інпутаў. Калі б this не паказваў на той элемент, у якім адбылася падзея, то ў нас бы такое не атрымалася - прыйшлося б для кожнага інпута ствараць сваю функцыю з тым жа кодам!

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць