⊗jsPmCxInr 433 of 505 menu

Darba pamati ar kontekstu JavaScript

Pieņemsim, ka mums ir kāda funkcija func, kurās iekšā tiek izmantots this:

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

Uz ko norāda this šajā funkcijā? Mēs nezinām. Un JavaScript nezinām. Un pati funkcija nezinām. Tas ir, funkcijas izveides brīdī tas, uz ko tieši norāda this, nav noteikts. Un noteikts tas būs tikai tad, kad šī funkcija tiks izsaukta.

Pieņemsim, ka mums ir kāds input lauks:

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

Piesaistīsim šim input laukam mūsu funkciju func tā, lai tā izpildītos, kad input zaudē fokusu. Tagad funkcijas izpildes brīdī this norādīs uz mūsu input lauku:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // pēc fokusa zaudēšanas izvadīs 'text' }

Bet mums var būt nevis viens input lauks, bet vairāki:

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

Un uz katru no šiem input laukiem mēs varam piesaistīt mūsu funkciju func. Šajā gadījumā pirmajam elementam this funkcijas izsaukšanas brīdī norādīs uz to, bet otrajam - uz to.

Prakse tas nozīmē, ka this iekšā funkcijā ir atkarīgs no tā, uz kura no input laukiem mēs zaudējām fokusu:

let elem1 = document.querySelector('#elem1'); elem1.addEventListener('blur', func); let elem2 = document.querySelector('#elem2'); elem2.addEventListener('blur', func); function func() { console.log(this.value); // izvadīs vai nu 'text1', vai 'text2' }

Kopumā, šāda this īpatnība ir ļoti ērta - mēs veidojam tikai vienu funkciju un piesaistām to jebkuram skaitam input lauku. Ja this nenorādītu uz to elementu, kurā notika notikums, tad mums tas neizdotos - būtu jāveido katrai input laukam sava funkcija ar to pašu kodu!

Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt