我似乎不太可能发现某种明显的跨浏览器错误。但根据文档Reflect.set
应该使用第4个参数作为thisArg(例如,如果set变量是setter)。第一个参数是要设置值的对象,但每当我提供任何对象作为第4个参数时,将在该对象上设置值而不是目标对象。
var target = new Object;
var thisArg = new Object;
Reflect.set(target, 'variable', 52, thisArg);
target.variable == undefined
thisArg.variable == 52
有任何解释吗?
答案 0 :(得分:2)
第一个参数是要在
上设置值的对象
不完全是。第一个参数是调用setter的对象(包括对象原型链上的setter)。
每当我提供任何对象作为第4个参数时,就会设置该值而不是目标对象。
是。因为属性总是在接收器上设置。只是参数是可选的,因为它通常与目标相同,因此在未提供时默认为第一个参数。