Учти это:

тре разработчиков Mozilla есть страница оFunction.prototype.bind Функция и обеспечивает функцию совместимости для браузеров, которые не поддерживают эту функцию.

Однако, анализируя этот код совместимости, я не могу понять, почему они используютinstanceof nop. nop был установлен наfunction() {}, Какая часть спецификации ECMA наbind это соответствует? И какие переменные являются экземпляромfunction() {}?

Следующие возвращенияfalse, поэтому я не совсем знаю, для чего он используется. Какие вещи возвращают истину при выполненииinstanceof function() {} проверить?

(function() {}) instanceof (function() {}) // false

Код выглядит следующим образом:

Function.prototype.bind = function( obj ) {
    if(typeof this !== 'function')
      throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');

    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) ) );    
        };

    bound.prototype = this.prototype;

    return bound;
};

Ответы на вопрос(2)

Ваш ответ на вопрос