⊗jsPmCxInr 433 of 505 menu

Pagrindai dirbant su kontekstu JavaScript

Tarkime, kad turime kokią nors funkciją func, kurios viduje naudojamas this:

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

Į ką nukreiptas this šioje funkcijoje? O mes nežinome. Ir JavaScript nežino. Ir pati funkcija nežino. Tai yra, funkcijos sukūrimo metu tai, į ką konkretiai nukreiptas this, neapibrėžta. Ir tai apsibrėš tik tada, kai ši funkcija bus iškviesta.

Tarkime, kad turime kokį nors input lauką:

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

Priskirkime prie šio input lauko mūsų funkciją func taip, kad ji vyktų praradus fokusą input laukui. Dabar funkcijos vykdymo metu this bus nukreiptas į mūsų input lauką:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // praradus fokusą išves 'text' }

Bet juk mes galime turėti ne vieną input lauką, o kelis:

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

Ir prie kiekvieno iš šių input laukų mes galime priskirti mūsų funkciją func. Šiuo atveju pirmam elementui this funkcijos iškvietimo metu bus nukreiptas į jį, o antram - į jį.

Praktiškai tai reiškia, kad this funkcijos viduje priklauso nuo to, kuriame input lauke mes praradome fokusą:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // išves arba 'text1', arba 'text2' }

Iš esmės, ši this ypatybė labai patogi - mes sukuriame tik vieną funkciją ir pririšame ją prie bet kokio kiekio input laukų. Jei this nekryptų į tą elementą, kuriame įvyko įvykis, tai mes to negalėtume padaryti - tektų kiekvienam input laukui kurti savo funkciją su tuo pačiu kodu!

Lietuvių
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mes naudojame slapukus svetainės veikimui, analizei ir personalizavimui. Duomenų apdorojimas vyksta pagal Privatumo politiką.
priimti visus nustatyti atšaukti