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.

1 Like

Theo mình hiểu thì Proxy đơn giản là gắn trigger cho object.
Bạn tham khảo:


2 Likes

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 ?

1 Like

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.

2 Likes

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.

6 Likes

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.

2 Likes

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ồ :smiley:
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:

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?