2012-12-19 46 views
11

Vì vậy, nếu bạn nhìn vào fiddle này http://jsfiddle.net/r0k3t/z8f2N/1/ bạn có thể thấy rằngtại sao Object.prototype === không phải là myNewObj.prototype?

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

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

trả về true. Tại sao không

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

Cho rằng tôi đã tạo đối tượng "tôi" như một đối tượng đủ chắc chắn nguyên mẫu của nó phải là Object.prototype và dòng đầu tiên dường như xác nhận điều đó.

Trả lời

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

tôi cho phép bạn đoán hiện nay như thế nào getPrototypeOf công trình :-)

Ngoài ra, phi tiêu chuẩn-chưa-nhưng-tác phẩm-hầu-ở khắp mọi nơi giải pháp (nhờ jAndy):

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

1 - một bổ sung tuyệt vời cho câu trả lời của bạn sẽ là: 'console.log (Object.prototype === me .__ proto __);' * (sẽ được chuẩn hóa bởi ES6 * – jAndy

+0

Oh Darnit! Tôi cũng biết điều đó Tôi ước gì mình có thể hấp thụ mọi thứ trong lần đầu tiên và nhớ tất cả mọi thứ. – Kenn

+0

Đợi mặc dù - tại sao Yehuda Katz lại nói blog của mình (http://yehudakatz.com/2011/08/12/understanding-prototypes-in-javascript/) trong phần "Object Literals" - "literals đối tượng luôn đặt nguyên mẫu của đối tượng mới được tạo thành đối tượng nằm ở Object .prototype ", sau đó nhìn vào hình ảnh. Bạn có thể đổ lỗi cho tôi vì bị nhầm lẫn không? yeesh! – Kenn

Các vấn đề liên quan