0

我每天都在使用 Ruby,但如今 JavaScript 无处不在,我也需要学习这种语言。

我从“学习 JavaScript 设计模式”开始,现在我阅读了第 6 版“JavaScript:权威指南”。

我也在读一些博客。

我找到了一个我完全不明白的代码片段:

if (!Function.prototype.bind) {
  Function.prototype.bind = function(obj) {
    var slice = [].slice,
        args  = slice.call(arguments, 1),
        self  = this,
        nop   = function () {},
        bound = function () {
          return self.apply(this instanceof nop ? this : (obj || {}), args.concat(slice.call(arguments)));   
        };
    nop.prototype   = self.prototype;
    bound.prototype = new nop();
    return bound;
  };
}

我知道它会检查是否定义了一个名为 bind 的函数,如果没有定义它。

但是为什么要检查 Function 对象的原型呢?

为什么它不是一个简单的检查:

if(typeof bind != 'function')
4

1 回答 1

2

因为bind是类型对象的类方法Function,而不是 Javascript 提供的全局函数。

于 2013-11-10T21:34:32.790 回答