代理模式
是为一个对象提供一个代用品或占位符,以便控制对它的访问
ES5 版
/**
* 代理模式
*/
export default class ProxyPro {
constructor(args) {
return new Proxy(args, {
get: function (target, key, receiver) {
// console.log(target, key, receiver);
console.log(`获取 ${key}`)
return Reflect.get(target, key, receiver)
},
set: function (target, key, value, reciver) {
console.log(`设置 ${key} 为 ${value}`)
return Reflect.set(target, key, value, reciver)
}
})
}
}
ES6 版
let Flower = function() {}
let xiaoming = {
sendFlower: function(target) {
let flower = new Flower()
target.receiveFlower(flower)
}
}
let B = {
receiveFlower: function(flower) {
A.listenGoodMood(function() {
A.receiveFlower(flower)
})
}
}
let A = {
receiveFlower: function(flower) {
console.log('收到花'+ flower)
},
listenGoodMood: function(fn) {
setTimeout(function() {
fn()
}, 1000)
}
}
xiaoming.sendFlower(B)