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)
任何解释?
第一个参数是要设置值的对象
不完全是。第一个参数是调用其设置器的对象(包括对象原型链上的设置器)。
每当我提供任何对象作为第四个参数时,值都会设置在该对象上,而不是目标对象上。
是的。因为该属性总是在接收器上设置。只是参数是可选的,因为它通常与目标相同,因此在未提供时默认为第一个参数。