我想知道,是否可以模仿Function.prototype.call
方法?
我已经实现了bind()
的模拟,道格拉斯·克罗克福德的例子众所周知,在包装函数中使用apply()
。
我是否可以call()
执行相同操作,而不使用apply
或bind
?
这不是我在现实世界中会使用的东西,而是出于学术兴趣!
到目前为止,除了使用隐式绑定外,我无法弄清楚这一点 - 这有明显的缺点
'use strict';
// obj to bind as this, params is an array of parameters
function customCall( obj, params ){
var funToCall = this;
obj.funToCall = funToCall; // Implicit binding
obj.funToCall(...params); // Obviously not a good idea
}
var objA = {
a: "objA value"
};
function test(num1, num2){
debugger;
console.log(this.a);
console.log(num1, num2);
}
test.customCall = customCall;
test.customCall(objA, [1,2]) //objA value, 1 2