Vorremo rendere disponibile questo progetto open-source per persone in tutto il mondo.

Aiutaci a tradurre il contenuto di questo tutorial nella tua lingua!

torna alle lezioni

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.