⊗jsPmCxInr 433 of 505 menu

JavaScript'те контекст менен иштөөнүн негиздери

Бизде бир функция func болсун, анын ичинде this колдонулат:

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

Бул функциянын ичиндеги this эмнени көрсөтөт? Биз билбейбиз. Да JavaScript да билбейт. Функцияның өзү да билбейт. Башкача айтканда, функция түзүлгөн учурда this так эмнени көрсөтөрү аныкталган эмес. Ал гана мындан кийин аныкталат, бул функция чакырылганда.

Бизде бир input болсун:

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

Бул input'ко биздин func функциябызды input фокусунан айрылганда аткарыла тургандай кылып байлайлы. Эми функция аткарылган учурда this биздин input'ту көрсөтөт:

let elem = document.querySelector('#elem'); elem.addEventListener('blur', func); function func() { console.log(this.value); // фокус жоголгондо 'text' чыгарат }

Бирок бизде бир input эмес, бир нече input болушу мүмкүн:

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

Жана биз бул input'тордун ар бирине биздин func функциябызды байлай алабыз. Бул учурда биринчи элемент үчүн this функция чакырылган учурда аны көрсөтөт, экинчиси үчүн - өзүн көрсөтөт.

Практикада бул this функциянын ичинде биз кайсы input'тон фокусубузду жоготконубузга жараша болорун билдирет:

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'тин мындай өзгөчөлүгү өтө ыңгайлуу - биз бир гана функция түзөбүз жана аны каалаган канча input'ко байлай алабыз. Эгерде this окуя болгон элементти көрсөтпөгөндө, анда биз муну ишке ашыра алмак эмес эле - ар бир input үчүн бирдей кодду камтыган өз функцияңды түзүшүңө мажбур болмок элең!

Кыргызча
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 файлдарын колдонобуз. Маалыматтарды иштетүү Маалыматты коргоо саясаты боюнча жүргүзүлөт.
баарын кабыл алуу ыңгайлаштыруу четке кагуу