请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

3-13 最后的例子中,set(target, key, value, proxy){ ... }这里的proxy有什么作用,不传也不影响结果

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了

2 回复 有任何疑惑可以回复我~
  • 提问者 isjia #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2017-10-16 17:29:43
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信