01/10/2018, 16:11
Hỏi về Proxy trong JavaScript
Mình đang tìm hiểu về Proxy
trong Javascipt mà thấy mơ hồ và mông lung quá.
Các bạn có thể giải thích hay cho mình xin 1 ví dụ nào đó dễ hiểu và trực quan nhất về nó được không.
Mình cám ơn các bạn.
Bài liên quan
Theo mình hiểu thì Proxy đơn giản là gắn trigger cho object.
MDN Web Docs
Bạn tham khảo:
Proxy
The Proxy object is used to define custom behavior for fundamental operations (e.g. property lookup, assignment, enumeration, function invocation, etc).
Tìm hiểu những khái niệm lạ trong javascript (Phần 1)
(Ảnh) >Phần chém gió giới thiệu Javascript là ngôn ngữ rất si đa và càng học nó mình càng thấy nó sida vcđ, gần đây mình được tiếp xúc được với ...
tks bạn, thực sự là hai link trên bạn đưa mình cũng đọc qua cả rồi, thậm chí mình cũng đọc nhiều link khác nữa trên Google rồi … nhưng kết quả thu lại không được nhiều !
Híc … bạn còn phương pháp nào khác không ?
Vấn đề của bạn là gì ? Bạn không hiểu phần nào ?
Như bên link của
Kipalog
họ nói khi thực thi dòng lệnh này:console.log(proxy1.secret); // log ra "easily scared" và trigger event
Mà mình không hiểu : nếu để log ra giá trị của đối tượng monster1
" easily scared "
thì cũng đâu cần phải làm phức tạp vậy - vàtrigger event
ở đây là trigger event nào ?Mục tiêu chính của đoạn này không phải chỉ để log ra, cho nên có lẽ bạn đang hiểu nhầm nên mới nói như này :
Mục đích của câu lệnh trên là để GET ra thuộc tính của object, và câu lệnh này sẽ trigger event get.
MDN Web Docs
handler.get()
The handler.get() method is a trap for getting a property value.
Proxy trong Javascript tương đương với Proxy Pattern.
Ý tưởng của nó là dùng 1 object để đại diện cho một object khác, object đại diện đó có đầy đủ các thuộc tính, phương thức như object gốc, khi được access, object đại diện sẽ nối vào object gốc để đảm bảo behavior đúng như object gốc. Ngoài ra thì bạn cũng có thể thêm code vào object đại điện để làm nhiệm vụ logging, override tham số, override kết quả trả về, v.v.
Javascript là ngôn ngữ dùng dynamic dispatch cho nên việc làm Proxy là siêu dễ so với các ngôn ngữ khác, thậm chí nó còn mở rộng để dùng được với cả những access vào những thuộc tính, phương thức vốn không tồn tại.
sao nghe giống Decorator Pattern quá vậy ạ?
à, hình như Proxy pattern thì bổ sung thêm xử lý vào method ngoài việc chính mà nó thực hiện, còn Decorator pattern thì bổ sung thêm method cho object.
cho mình hỏi. khi nào thì dùng Proxy vậy, có thể cho mình xin 1 vài trường hợp đơn giản đc ko?
Thật sự mình chỉ biết ý tưởng của nó, còn để làm gì thật sự thì mình cũng mơ hồ
GitHub
Bạn có thể google các ứng dụng của Proxy Pattern. Lưu ý Proxy của JS và Proxy Pattern chúng tương đương về ý tưởng chứ Implementation của 2 cái khác nhau.
Tham khảo repo tổng hợp ứng dụng Proxy bên JS:
mikaelbr/proxy-fun
proxy-fun - For learning how to use JavaScript Proxy, or just to see what is possible