ES6 Observer Pattern
发布于 2026-07-06 11:10:57
2 次浏览
// The observed target object
let obj = { name: 'zyc', csdn: 'Blog'};
// Observer
function print() {
console.log('The object was operated!');
}
// Use proxy
const observeObj = (obj) => new Proxy(obj, {set, get});
// Message queue
const observeQueue = new Set();
const observe = (fn) => observeQueue.add(fn);
// Set
function set(target, key, value, receiver) {
let result = Reflect.set(target, key, value, receiver);
for(let item of observeQueue) {
item.call(this);
}
return result;
}
// Get
function get(target, key, receiver) {
let result = Reflect.get(target, key, receiver);
for (let item of observeQueue) {
item.call(this);
}
return result;
}
// Proxy object
let proxy= observeObj(obj);
// Push into the message queue
observe(print);
// Trigger test
proxy.name = "Zhang San";
console.log(proxy.name);
暂无评论。