3-13 最后的例子中,set(target, key, value, proxy){ ... }这里的proxy有什么作用,不传也不影响结果
来源:3-13 Proxy和Reflect
isjia
2017-10-12
function validator(target, validator) {
return new Proxy(target, {
_validator: validator,
set(target, key, value, proxy){
if(target.hasOwnProperty[key]){
let va = this._validator[key];
if(!!va(value)){
return Reflect.set(target,key, value, proxy);
} else {
throw Error(`不能设置${key}到${value}`);
}
} else {
throw Error(`${key} 不存在`)
}
}
})
}这里 set(target, key, value, proxy),不可以写成set(target, key, value)吗?这里的proxy有什么用?
写回答
1回答
-
这个是用来修改setter的this指向的,也就是说如果set的时候指定这个参数,setter中的this就是proxy,如果设置一个简单的属性key:value,这个动作就不会实际修改target,而是修改proxy了
212017-10-16
相似问题