2012-12-19 12 views
11

Quindi, se si guarda a questo violino http://jsfiddle.net/r0k3t/z8f2N/1/ si può vedere cheperché non è Object.prototype === su myNewObj.prototype?

var me = { fName: "ken", lName: "n" }; 

console.log(Object.prototype === Object.getPrototypeOf(me)); 

restituisce true. Perché non

console.log(Object.prototype === me.prototype); 

Premesso che ho creato il "me" oggetto come un oggetto letterale abbastanza sicuro che sia il prototipo dovrebbe essere Object.prototype e la prima linea sembrerebbe confermare che.

risposta

18
Object.prototype === me.constructor.prototype; // true 

Vi lascio scoprire chi ora come getPrototypeOf opere :-)

Inoltre, la non-standard-ancora-ma-opere-quasi-ovunque soluzione (grazie JANDY):

Object.prototype === me.__proto__; // true 
+5

+1 - una grande aggiunta alla tua risposta sarebbe: 'console.log (Object.prototype === me .__ proto __);' * (che verrà standardizzato da ES6 * – jAndy

+0

Oh Darnit! Lo sapevo anche io (ben visto Mi piacerebbe poter assorbire tutto per la prima volta e ricordare tutto. – Kenn

+0

Aspetta però - perché Yehuda Katz dice in il suo blog (http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/) nella sezione "Object Literals" - "letterali degli oggetti imposta sempre il prototipo dell'oggetto appena creato in un oggetto situato nell'oggetto .prototype ", quindi guarda l'immagine. Puoi biasimarmi per essere stato confuso? Yeesh! – Kenn

Problemi correlati