Uno strano instanceof
importanza: 5
Nel codice sottostante, perché instanceof ritorna true? Possiamo facilmente vedere che a non è creato da B().
function A() {}
function B() {}
A.prototype = B.prototype = {};
let a = new A();
alert( a instanceof B ); // true
Sì, sembra strano.
Ma instanceof non prende in considerazione la funzione, ma piuttosto il suo prototype, che trova riscontro nella catena dei prototye.
In questo caso a.__proto__ == B.prototype, quindi instanceof ritorna true.
Quindi, secondo la logica di instanceof, è il prototype a definire il tipo, non il costruttore.