Was ist der Unterschied zwischen isPrototypeOf und instanceof in Javascript?

In einige meiner eigenen älteren code verwende ich das folgende:

Object.prototype.instanceOf = function( iface )
{
 return iface.prototype.isPrototypeOf( this );
};

Dann mache ich (zum Beispiel)

[].instanceOf( Array )

Dies funktioniert, aber es scheint, das folgende würde das gleiche tun:

[] instanceof Array

Nun, sicherlich ist dies nur ein sehr einfaches Beispiel. Meine Frage ist daher:

Ist a instanceof b IMMER das gleiche wie b.prototype.isPrototypeOf(a) ?

  • Während Sie können immer instanceof (mit Konstruktoren auf die Rechte Seite), nicht alle Objekte, die möglicherweise Erben von Object.prototype. Object.create(null) instanceof Something und ({}).instanceOf({prototype:Something.prototype}) arbeiten (und Ertrag false), wo das Gegenteil würde scheitern.
InformationsquelleAutor Steffen Heil | 2010-03-17
Schreibe einen Kommentar