13 of 17 menu

Памылка this у стрэлачным апрацоўшчыку JavaScript

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

Хай у нас ёсць кнопка:

<button>text</button>

Атрымаем спасылку на гэтую кнопку ў зменную:

let button = document.querySelector('button');

Навядзём на кнопку апрацоўшчык падзеі, скарыстаўшыся стрэлачнай функцыяй:

button.addEventListener('click', () => { console.log(this.textContent); });

Вось-тут нас і чакае сюрпрыз: this у стрэлачнай функцыі не будзе адносіцца да элемента, у якім адбылася падзея.

Давайце паглядзім, што з гэтым можна зрабіць.

Рашэнне першае

Можна адмовіцца ад выкарыстання this і скарыстацца зменнай, да якой прывязана падзея:

button.addEventListener('click', () => { console.log(button.textContent); });

Рашэнне другое

Можна атрымаць элемент, да якога прывязана падзея, праз event.target:

button.addEventListener('click', (event) => { console.log(event.target.textContent); });

Рашэнне трэцяе

Можна адмовіцца ад стрэлачнай функцыі і скарыстацца звычайнай:

button.addEventListener('click', function() { console.log(this.textContent); });
Беларуская
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 для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць