2014-11-16 10 views
8

Warum gibt der folgende Fehler false zurück?Warum ist Object.prototype in Object false?

Object.prototype instanceof Object 
+1

Weil Object.prototype nicht aus der Object() - Funktion gemacht wurde – Aravind

+1

Aber das lustige ist, 'Object.prototype.toString() ===" [object Object] "'. – soktinpk

+1

@Aravind: 'Funktion' war nicht entweder, aber ist 'instanceof Object' – Bergi

Antwort

9

Denn es fragt grundsätzlich, ob Object.prototype von Object ‚s .prototype Objekt erbt: Es ist nicht.

a instanceof b entspricht - es testet, ob b.prototype in der Prototypkette von a ist. In Ihrem Fall ist es nicht in die Kette, weil es der Anfang der Kette selbst ist. isPrototypeOf ist nicht reflexiv.

+0

Bro - hast du einen Blog, der deine Gefühle auf OLOO vs. Neu etc .. und Prototyp etc. erklärt. Ich mag die Art wie du ausdrücken/erklären. sehr prägnant. Jede Seite von dir kann ich lesen? –

+1

@jamesemanon: Nein (noch nicht). Aber Sie können [meine SO Antworten zum Thema natürlich] durchsuchen (http://stackoverflow.com/search?tab=votes&q=user%3a1048572%20is%3aanswer%20votes%3a4%20.prototype) :-) – Bergi

+0

@ jamesemanon: Um ehrlich zu sein, ich habe nie den Begriff [OLOO] gehört (https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch6 .md # Delegation-Theorie) vor und musste es googeln. Aber ja, das scheint das Modell des Denkens zu sein, das Sie (oder ich) in JS verwenden sollten.Ich mag seine Generativität, das Konzept von Klassen kann dadurch trivial implementiert werden. Mit Konstruktorfunktionen & 'new' ist nur syntaktischer Zucker (wie ES6 Klassen sind, aber mit mehr" gemeinsamer "Syntax) – Bergi

0

Referenzierung MDN:

instanceof Die Bedienungsperson überprüft, ob sich ein Objekt in seinem Prototyp Kette die prototype Eigenschaft eines Konstruktors.

Verwandte Themen