使用ES6代理来观察对象

Kes*_*ern 1 javascript ecmascript-6

我可以使用ES6代理来观察对象,获取和设置属性等吗?例如:

var obj = {a: 1; b: 2};
obj.a = 3; // I need to catch this setting, like a Object.watch() in Firefox
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 5

是的,这是他们的目的的一部分.您正在寻找的陷阱被称为set:

let obj = {a: 1, b: 2};
let p = new Proxy(obj, {
  set(target, name, value) {
    console.log("set " + name + " to " + value);
    target[name] = value;
  }
});
p.a = 3;
Run Code Online (Sandbox Code Playgroud)

  • @KesantieluDasefern:不,当然不是.要处理这个问题,你必须修改`obj`(例如,安装一个getter/setter组合),它将是属性特定的.AFAIK,没有"Object.watch"式功能的计划; 相对于效用而言,性能影响太大. (2认同)