Function.prototype.apply.apply - 为什么要调用它两次

时间:2016-06-03 08:26:19

标签: javascript jasmine

今天在检查Jasmine的源代码here时,我偶然发现了以下情况:

if (queueableFn.timeout) {
    timeoutId = Function.prototype.apply.apply(self.timeout.setTimeout, [j$.getGlobal(), [function() {
      var error = new Error('Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.');
      onException(error);
      next();
    }, queueableFn.timeout()]]);
}

我对在apply点击prototype.apply.apply两次rename的原因感兴趣

1 个答案:

答案 0 :(得分:3)

commit that introduced this syntax解释了一切:

  

较旧的IE修复仍然不是绿色,但越来越近了。老年人概要   IE差异:

     
      
  • 较早的IE没有对计时功能进行申请/调用
  •   
  • 较旧的IE不允许应用虚假参数
  •   
  • 较旧的IE不允许将onclick设置为未定义的值
  •   
  • 较旧的IE在dom节点上没有文本属性
  •