代理模式 ⭐
定义
代理模式(Proxy Pattern),为一个对象提供一个代用品或占位符,以便控制对它的访问,可以改变原始对象行为。
实现
js
// ES6的Proxy
let Person = {
name: 'Zhang San',
age: 18,
rate: '',
}
let ProxyPerson = new Proxy(Person, {
get(target, key) {
if (key != 'age') {
return Reflect.get(target, key)
} else {
return '保密'
}
},
set(target, key, value) {
if (key === 'rate') {
return Reflect.set(target, key, value === 'A' ? '推荐' : '待提高')
}
return Reflect.set(target, key, value)
},
})
console.log(ProxyPerson.name) // 'Zhang San'
console.log(ProxyPerson.age) // '保密'
ProxyPerson.age = '30'
console.log(ProxyPerson.age) // '保密'
console.log(Person.age) // '30'
ProxyPerson.rate = 'B'
console.log(ProxyPerson.rate) // '待提高'
应用场景
- DOM 事件代理
- ES6 Proxy,Vue3 数据响应
- 表单验证