2012-12-19 10 views
11

Więc jeśli spojrzeć na ten skrzypce http://jsfiddle.net/r0k3t/z8f2N/1/ widać, żedlaczego nie jest Object.prototype === do myNewObj.prototype?

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

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

zwraca true. Dlaczego nie

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

nie Biorąc pod uwagę, że stworzył „mnie” obiekt jako obiekt dosłownym wystarczająco pewny, że to prototyp powinny być Object.prototype a pierwsza linia wydaje się potwierdzić.

Odpowiedz

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

I pozwalają domyślać się jak getPrototypeOf prace :-)

Również niestandardowym-jeszcze-But-prace-niemal wszędzie rozwiązanie (dzięki JANDY):

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

+1 - świetnym dodatkiem do twojej odpowiedzi byłoby: 'console.log (Object.prototype === me .__ proto __);' * (które zostanie znormalizowane przez ES6 * – jAndy

+0

Oh Darnit! Ja też to wiedziałem (dobrze to widziałem) Chciałbym móc zaabsorbować wszystko za pierwszym razem i zapamiętać to wszystko – Kenn

+0

Trzymaj się - dlaczego Yehuda Katz mówi w jego blog (http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/) w sekcji "Literały obiektów" - "literały obiektów zawsze ustawiają prototyp nowo utworzonego obiektu na obiekt znajdujący się na obiekcie .prototype ", a następnie spójrz na obraz. Czy możesz mnie obwiniać za bycie zmieszanym? yeesh! – Kenn

Powiązane problemy