⊗jsOpAdMCL 43 of 60 menu

Mất ngữ cảnh trong mã phương thức của OOP trong JavaScript

Khi sử dụng mã nguồn của một phương thức lớp, ngữ cảnh có thể bị mất. Hãy cùng xem xét một ví dụ. Giả sử chúng ta có lớp sau:

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

Hãy tạo một đối tượng của lớp này:

let user = new User('john');

Gán mã phương thức vào một biến:

let func = user.getName;

Vào thời điểm gán phương thức vào biến, ngữ cảnh đã bị mất. Bây giờ this bên trong mã phương thức sẽ không trỏ đến đối tượng của lớp. Hãy kiểm tra bằng cách gọi hàm của chúng ta:

console.log(func()); // lỗi

Để giải quyết vấn đề, có thể ràng buộc ngữ cảnh vào hàm, ví dụ, thông qua bind:

func = func.bind(user); console.log(func()); // hoạt động
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