2014-11-16 14 views
8

Perché il seguente risultato è falso?Perché Object.prototype instanceof Object è falso?

Object.prototype instanceof Object 
+1

Poiché Object.prototype non è stato creato dalla funzione Object() – Aravind

+1

Ma la cosa divertente è, 'Object.prototype.toString() ===" [oggetto oggetto] "'. – soktinpk

+1

@Aravind: 'Funzione' non era né, ma è' instanceof Object' – Bergi

risposta

9

perché chiede in sostanza se Object.prototype non eredita da .prototype oggetto Object s': Non è così.

a instanceof b equivale a b.prototype.isPrototypeOf(a) - mette alla prova se b.prototype si trova nella catena di prototipi a. Nel tuo caso, non è nella catena, perché è l'inizio della catena stessa. isPrototypeOf non è riflessivo.

+0

Bro - hai un blog che spiega i tuoi sentimenti su OLOO rispetto a Nuovo ecc. E prototipo ecc. Mi piace il modo in cui esprimere/spiegare. molto succinta. Qualcuno dei tuoi siti che posso leggere? –

+1

@jamesemanon: No (t ancora). Ma puoi sfogliare [le mie risposte SO sull'argomento, naturalmente] (http://stackoverflow.com/search?tab=votes&q=user%3a1048572%20is%3aanswer%20votes%3a4%20.prototype) :-) – Bergi

+0

@ jamesemanon: Ad essere onesti, non ho mai sentito il termine [OLOO] (https://github.com/getify/You-Dont-Know-JS/blob/master/this%20%26%20object%20prototypes/ch6 .md # delegation-theory) prima e ho dovuto google. Ma sì, quello sembra essere il modello di pensiero che dovresti (o: io) usare in JS.Mi piace la sua generosità, il concetto di classi può essere banalmente implementato da esso. L'uso delle funzioni di costruzione e 'new' è solo zucchero sintattico (come le classi ES6, ma con una sintassi più" comune ") – Bergi

0

Riferimento MDN:

Le prove instanceof operatore se un oggetto contiene nella sua catena di prototipi proprietà prototype di un costruttore.

Problemi correlati