Javascript 使用ES6代理观察对象

Javascript 使用ES6代理观察对象,javascript,ecmascript-6,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 是的,这是他们的部分目的。您要查找的陷阱称为set: let obj={a:1,b:2}; 设p=新代理(obj{ 设置(目标、名称、值){ console.log(“将“+name+”设置为“+value”); 目标[名称]=值;

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

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

是的,这是他们的部分目的。您要查找的陷阱称为
set

let obj={a:1,b:2};
设p=新代理(obj{
设置(目标、名称、值){
console.log(“将“+name+”设置为“+value”);
目标[名称]=值;
}
});

p、 a=3是的,这是他们的部分目的。您要查找的陷阱称为
set

let obj={a:1,b:2};
设p=新代理(obj{
设置(目标、名称、值){
console.log(“将“+name+”设置为“+value”);
目标[名称]=值;
}
});

p、 a=3为什么不使用对象的getter/setter

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

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

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

是的,你可以。您可以在MDN上了解代理:是的,您可以。您可以在MDN上了解代理:是的,但这不会直接处理将值设置为
obj.a
。@KesantieluDasefern:当然不是。要处理这个问题,您必须修改obj(例如,安装getter/setter组合),并且它是特定于属性的。顺便说一句,没有关于
对象的计划。类似于watch
的功能;相对于实用程序来说,对性能的影响太大了。实际上,Object.observe计划用于ES7,但他们决定支持代理。是的,但这不会直接处理将值设置为
obj.a
。@KesantieluDasefern:不,当然不会。要处理这个问题,您必须修改obj(例如,安装getter/setter组合),并且它是特定于属性的。顺便说一句,没有关于
对象的计划。类似于watch
的功能;相对于utility.Actual Object.observe,ES7计划使用太多的性能影响,但他们决定改为支持代理。对现有属性使用getter/setter如何?对现有属性使用getter/setter如何?