13 of 17 menu

Lỗi this trong trình xử lý hàm mũi tên JavaScript

Gần đây, việc sử dụng hàm mũi tên ở mọi nơi thay cho hàm thông thường đã trở thành mốt. Tuy nhiên, những hàm này có một điểm trừ - chúng không giữ this. Hãy cùng xem xét vấn đề có thể gặp phải vì điều này.

Giả sử chúng ta có một nút bấm:

<button>text</button>

Lấy tham chiếu đến nút này vào biến:

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

Gắn trình xử lý sự kiện cho nút, sử dụng hàm mũi tên:

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

Đây là lúc bất ngờ ập đến: this trong hàm mũi tên sẽ không đề cập đến phần tử nơi sự kiện xảy ra.

Hãy xem chúng ta có thể làm gì với điều này.

Giải pháp thứ nhất

Có thể từ bỏ việc sử dụng this và sử dụng biến mà sự kiện được gắn vào:

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

Giải pháp thứ hai

Có thể lấy phần tử mà sự kiện được gắn vào thông qua event.target:

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

Giải pháp thứ ba

Có thể từ bỏ hàm mũi tên và sử dụng hàm thông thường:

button.addEventListener('click', function() { console.log(this.textContent); });
Tiếng Việt
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ʻzbek
Chúng tôi sử dụng cookie để vận hành trang web, phân tích và cá nhân hóa. Việc xử lý dữ liệu được thực hiện tuân theo Chính sách bảo mật.
chấp nhận tất cả tùy chỉnh từ chối