模拟JavaScript Function.prototype.call方法,而不使用bind或apply?

时间:2017-01-12 11:40:30

标签: javascript

我想知道,是否可以模仿Function.prototype.call方法?

我已经实现了bind()的模拟,道格拉斯·克罗克福德的例子众所周知,在包装函数中使用apply()

我是否可以call()执行相同操作,而不使用applybind? 这不是我在现实世界中会使用的东西,而是出于学术兴趣!

到目前为止,除了使用隐式绑定外,我无法弄清楚这一点 - 这有明显的缺点

'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

0 个答案:

没有答案