Возник вопрос о реализации функции связывания, которую я нашел на сайте Mozilla. По большей части это имеет смысл для меня, но я не могу понять, для чего эта проверка...
this instanceof nop ? this : ( obj || {} )
в функции связывания. Очевидно, что его проверка, если 'this' является пустой функцией, но зачем вам нужно связывать пустую функцию. Я попробовал его в firebug, он работает, но в чем смысл? Просто пытаюсь увеличить свои знания 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;
};
}