regresar a la lección

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.