Extraño instanceof
importancia: 5
En el siguiente código, ¿por qué instanceof
devuelve true
? Podemos ver fácilmente que a
no es creado por B()
.
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // verdadero
Sí, se ve extraño de hecho.
Pero a instanceof
no le importa la función, sino más bien su prototype
, que coincide con la cadena del prototipo.
Y aquí a.__ proto__ == B.prototype
, entonces instanceof
devuelve true
.
Entonces, según la lógica de instanceof
, el prototype
en realidad define el tipo, no la función constructora.