⊗jsOpAdMCL 43 of 60 menu

การสูญเสีย context ในโค้ดเมธอดของ OOP ใน JavaScript

เมื่อใช้โค้ดต้นฉบับของเมธอดคลาส context อาจสูญหายไป มาดูตัวอย่างกัน สมมติว่าเรามีคลาสต่อไปนี้:

class User { #name; constructor(name) { this.#name = name; } getName() { return this.#name; } }

มาสร้างอ็อบเจ็กต์ของคลาสนี้:

let user = new User('john');

เขียนโค้ดเมธอดลงในตัวแปร:

let func = user.getName;

ในขณะที่เขียนเมธอดลงในตัวแปร context ก็สูญหายไป ตอนนี้ this ภายในโค้ดเมธอดจะไม่ชี้ไปที่ อ็อบเจ็กต์ของคลาส ลองตรวจสอบ เรียก ฟังก์ชันของเรา:

console.log(func()); // ข้อผิดพลาด

เพื่อแก้ปัญหา สามารถผูก context กับฟังก์ชันได้ เช่น ผ่าน bind:

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