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回答

快乐动起来呀

2017-10-12

这个是用来修改setter的this指向的,也就是说如果set的时候指定这个参数,setter中的this就是proxy,如果设置一个简单的属性key:value,这个动作就不会实际修改target,而是修改proxy了

2
1
isjia
非常感谢!
2017-10-16
共1条回复

ES6零基础教学 解析彩票项目

ES6从零开始,量身设计的迷你案例,让你全面掌握ES6

2579 学习 · 881 问题

查看课程