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.