我有一個簡單的類在javascript:的Javascript原型和__proto__和getPrototypeOf問題
function foo() {
this.bar = "bar";
}
var test = new foo;
console.log(foo.prototype,foo.__proto__)
/*output: foo {
constructor: function foo() {
__proto__: Object
}
,
function Empty() {}
*/
console.log(test,test.prototype,test.__proto__,test.__proto__.__proto__)
/*output: foo {
bar: "bar"
__proto__: foo
}
,
undefined
,
foo {
constructor: function foo() {
__proto__: Object
}
,
Object {
...
}
*/
什麼我不明白:
在第一次登錄的foo.prototype
有__proto__
屬性,它是一個Object
在第二個日誌test.__proto__
具有__proto__
屬性,該屬性是Object
何時使用__proto__
和prototype
,有什麼區別?
UPDATE:
在John Resig's blog在}這種節有什麼啥子我不明白:
如果我使用var asd = "asd";
Object.getPrototypeOf
(asd)
它拋出一個TypeError
但如果我用var dsa = new String("dsa");
Object.getPrototypeOf
(dsa)
返回String
但asd.constructor.prototype == dsa.constructor.prototype
是true
爲什麼Object.getPrototypeOf
(asd)
拋出錯誤?這是一個字符串,不是嗎?
但正如你看到第二個日誌,'test.prototype == undefined' – 2011-05-24 15:49:56
我修改了我的答案與示例repl輸出。 – Jeremy 2011-05-24 16:13:30
感謝這個非常好的例子。現在我明白了一切。 – 2011-05-24 21:08:19