Function.call
。这个想法是创建一个对象,该对象是将值传递给呼叫方法的值。最初是
this
想到,但是这并不能真正起作用,因为它仅将对象的原型设置为thisArg
。
答案基本上归结为使用Object.create(thisArg)
构造函数,然后在该对象的某些键上以参数为“方法”。
沿着这条线:
thisArg
我的查询是,我对对象构造函数的工作有点混淆 - 似乎它将对象方法的Object()
设置为构造函数中传递的值,但是SPEC/MDN DOCS中还有其他一些Malarkey这基本上使我感到困惑。
关于为什么起作用有更好的解释吗?有其他实施方法吗?也许这是我不知道的一些hacky JS工作。
当调用无
时
thisArg = thisArg || window;
thisArg = Object(thisArg);
const methodSymbol = Symbol();
thisArg[methodSymbol] = this; // this is the function on which call is executed.
given
this
或Object
,返回一个普通的对象(例如调用new
或仅使用
null
)undefined
new Object()