使用ES6代理来观察对象

时间:2017-02-19 10:53:51

标签: 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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

为什么不使用对象的getter / setter?

let ourObj = {
    get a(){
        return this._a;
    }
    set a(val){
        console.log(val);
        this._a = val
    }
}