13 of 17 menu

ข้อผิดพลาด this ในตัวจัดการเหตุการณ์ฟังก์ชันลูกศรของ JavaScript

ช่วงนี้เป็นแฟชั่นที่จะใช้ฟังก์ชันลูกศรทุกที่แทนฟังก์ชันปกติ อย่างไรก็ตาม ฟังก์ชันเหล่านี้มีข้อแม้ - พวกมันไม่รักษา this ไว้ มาดูกันว่าเราอาจเจอปัญหาอะไรได้เพราะสิ่งนี้

สมมติว่าเรามีปุ่ม:

<button>ข้อความ</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
เราใช้คุกกี้สำหรับการทำงานของเว็บไซต์ การวิเคราะห์ และการปรับเนื้อหาให้เหมาะสมส่วนบุคคล การประมวลผลข้อมูลเกิดขึ้นตาม นโยบายความเป็นส่วนตัว.
ยอมรับทั้งหมด ปรับแต่ง ปฏิเสธ