什么是proxy
proxy大家可能不陌生,使用vue项目时也用过,也就是我们说的代理。怎样理解代理呢,通俗易懂些,来一段回忆,香港警匪片里的罪犯被逮捕问询时:有什么事请和我的代理律师说,也就是说要想直接了解被代理人的情况只能通过代理获取,代理也就成了原告和被代理者之间的沟通桥梁了。
上代码
- 定义一个proxy ,handler提供了set和get函数,其他的函数在这里就不详细介绍了,后面上连接
const prox = new Proxy(target, handler)
// target: 目标对象
// handler: 函数对象
const prox1 = new proxy({myObj}, {
set: function (target, prop, value, reciver) {
// target: 被代理对象,
// prop: 被代理对象属性名,
// value:被代理对象属性值,
// reciver: proxy对象,通常也是继承了proxy的其他对象
},
get: function(target, prop, reciver) {}
})
2、示例
const prox = new Proxy({a:1}, {
set: function (target, propname, value, reciver) {
if (typeof value === 'number') {
target[propname] = value
} else {
console.log('this must number.')
}
},
get:function(target, propname, reciver) {
let _num = target[propname]
if (typeof _num === 'number') {
return _num*_num
} else {
console.log('this must number.')
}
}
})
3、执行效果
- 赋值是number类型即可赋值成功
- 赋值不是number类型则赋值失败
- 赋值成功再获取该值