Reason detrás del uso de 'instanceof function () {}'?
En el Centro de desarrolladores de Mozilla, hay una página sobreFunction.prototype.bind
y proporciona una función de compatibilidad para navegadores que no admiten esta función.
Sin embargo, al analizar este código de compatibilidad no puedo descubrir por qué usaninstanceof nop
. nop
se ha establecido enfunction() {}
. ¿Qué parte de la especificación ECMA enbind
¿se corresponde con esto? ¿Y qué variables son una instancia defunction() {}
?
Los siguientes retornosfalse
, así que no sé completamente para qué se utiliza. Qué cosas vuelven verdaderas al hacer uninstanceof function() {}
cheque?
(function() {}) instanceof (function() {}) // false
El código es el siguiente
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;
};