Reflect.set无法正常工作

Joh*_*ith 5 javascript ecmascript-6

我似乎不太可能发现某种明显的跨浏览器错误.但是根据文档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
Run Code Online (Sandbox Code Playgroud)

任何解释?

Ber*_*rgi 2

第一个参数是要设置值的对象

不完全是。第一个参数是调用其设置器的对象(包括对象原型链上的设置器)。

每当我提供任何对象作为第四个参数时,值都会设置在该对象上,而不是目标对象上。

是的。因为该属性总是在接收器上设置。只是参数是可选的,因为它通常与目标相同,因此在未提供时默认为第一个参数。