如果提供本机函数,angularjs的angular.bind函数是否在IE中不起作用?

时间:2015-02-23 17:28:50

标签: javascript angularjs internet-explorer

来自angularjs 1.3来源 有人知道关于IE注释的主要if / else语句()在这里做了什么?我认为这是一个基本的错误/类型检查 - 即。如果你没有在fn参数中提供一个函数 - 那么按原样返回它,不要破坏整个程序的流程。但该评论似乎表明与IE有更多关系。

问题:

注释是否意味着angular.bind是否与Array.prototype.slice.call一起提供为fn。它会停止并返回fn的值(bc是本机函数)? 如果是这样的话,这在IE中是如何工作的? 我理解它是否清楚 - 如果在此angular.bind中提供本机功能 - 那么在IE中它将无法正常执行?

function bind(self, fn) {
  var curryArgs = arguments.length > 2 ? sliceArgs(arguments, 2) : [];

  if (isFunction(fn) && !(fn instanceof RegExp)) {

  /* commenting out below to highlight the if/else 

    return curryArgs.length
      ? function() {
          return arguments.length
            ? fn.apply(self, curryArgs.concat(slice.call(arguments, 0)))
            : fn.apply(self, curryArgs);
        }
      : function() {
          return arguments.length
            ? fn.apply(self, arguments)
            : fn.call(self);
        };
  */

  } else {
    // in IE, native methods are not functions so they cannot be bound (note: they don't need to be)
    return fn;
  }
}

以下是source code

的链接

0 个答案:

没有答案