>Object.getPrototypeOf(Object)
[Function: Empty]
>Object.prototype
{}
爲什麼我得到不同的結果?但如果我使用:Object.getPrototypeOf(Object)和Object.prototype有什麼區別?
>Object.getPrototypeOf({})
{}
一切都很好。我錯過了關於getPrototypeOf的點嗎?
>Object.getPrototypeOf(Object)
[Function: Empty]
>Object.prototype
{}
爲什麼我得到不同的結果?但如果我使用:Object.getPrototypeOf(Object)和Object.prototype有什麼區別?
>Object.getPrototypeOf({})
{}
一切都很好。我錯過了關於getPrototypeOf的點嗎?
Object.prototype
是所有其他對象從中繼承的對象。對於內置對象,位於prototype chain的根。從MDN文檔:
JavaScript中的所有對象都是從
Object
開始的;所有對象繼承的方法和屬性從Object.prototype
,儘管它們可能被重寫[...]
Object.getPrototypeOf
是一個方便的方法,以得到特定對象的原型。從MDN文檔:
Object.getPrototypeOf()
方法返回指定對象的原型(即內部[[Prototype]]
)。
不同類型的對象可以有不同的原型。
實例:
> Object.getPrototypeOf(Object) === Function.prototype
true
Object
是功能,因此它的原型是Function.prototype
。
> Object.getPrototypeOf(/foo/) === RegExp.prototype
true
/foo/
創建正則表達式,因此它的原型是RegExp.prototype
。
> Object.getPrototypeOf([]) === Array.prototype
true
[]
創建陣列,其原型爲Array.prototype
。
> Object.getPrototypeOf({}) === Object.prototype
true
{}
創建一個簡單對象,其原型是Object.prototype
。
我有一個類似的問題:爲什麼?
Object.getPrototypeOf(Object) === Function.prototype; // true
Object.getPrototypeOf(Object) === Object.prototype; // false
雖然:
Object.getPrototypeOf(Function) === Function.prototype); // true
Object.getPrototypeOf(Function) === Object.prototype); // false
對象和功能相同的行爲WRT getPrototypeOf,雖然Object.prototype中和Function.prototype的是不同的。 Function ===其屬性的內部[[prototype]],但Object的內部[[prototype]]不是它的屬性。
看起來很奇特(我沒有看到其他類似的情況)。
是的確,Object是一個函數,所以是Array等,所以是Function。所有都是'功能'。我們不應該說「物體是一流的功能」嗎? (而不是相反?只是開玩笑)
你並沒有真正解釋你期望的結果,但我試圖解釋Object.getPrototypeOf(Object)和Object.prototype之間的區別。 – 2014-10-08 15:14:49