JavaScript代理是否应该拦截对底层对象(如object)的直接更改。观察?

JavaScript代理是否应该拦截对底层对象(如object)的直接更改。观察?,javascript,arrays,object,proxy,observable,Javascript,Arrays,Object,Proxy,Observable,表示Observe现在已经过时,我们应该使用“更通用的代理对象” 但观察允许拦截现有对象上的更改。若代理不允许,那个么代理API并不比可观察API“更通用” 并给出拦截对代理对象的更改的示例,但不要谈论对底层对象的更改 在当前或未来的ECMA标准中,代理是否应该拦截对底层对象的更改 例如: let o = {}; let p = new Proxy(o, { set: (target, prop, val)=> console.log(target, prop, val) }); p.p1

表示Observe现在已经过时,我们应该使用“更通用的代理对象”

但观察允许拦截现有对象上的更改。若代理不允许,那个么代理API并不比可观察API“更通用”

并给出拦截对代理对象的更改的示例,但不要谈论对底层对象的更改

在当前或未来的ECMA标准中,代理是否应该拦截对底层对象的更改

例如:

let o = {};
let p = new Proxy(o, { set: (target, prop, val)=> console.log(target, prop, val) });
p.p1 = 'v1'; // this will log o, "p1", "v1"
o.p2 = 'v2'; // is this supposed to log o, "p2", "v2" in ECMA standard ?
o.p2='v2';//这是否应该在ECMA标准中记录o、“p2”、“v2”?

不,用那个特殊的图案

代理
对象上设置值,值将设置在
目标
对象上

尽管您也可以在原始对象上定义
getter

var obj={
获取getProp(){
返回“obj getter:+(此[“x”]| |无效0);
}
};
var代理=新代理(obj{
设置:功能(对象、道具、新值){
var oldval=对象[prop];
console.log(“set”、oldval、obj、prop、newval);
obj[prop]=newval;
},get:function(对象,道具){
console.log(“get”、obj、prop);
}
});
proxy.x=1;
控制台日志(obj.x);
控制台日志(obj.getProp)
o.p2='v2';//这是否应该在ECMA标准中记录o、“p2”、“v2”?

不,用那个特殊的图案

代理
对象上设置值,值将设置在
目标
对象上

尽管您也可以在原始对象上定义
getter

var obj={
获取getProp(){
返回“obj getter:+(此[“x”]| |无效0);
}
};
var代理=新代理(obj{
设置:功能(对象、道具、新值){
var oldval=对象[prop];
console.log(“set”、oldval、obj、prop、newval);
obj[prop]=newval;
},get:function(对象,道具){
console.log(“get”、obj、prop);
}
});
proxy.x=1;
控制台日志(obj.x);
控制台日志(obj.getProp)