在JavaScript中,每個對象都從特定原型繼承其屬性和方法,其中原型是對象。Object.prototype的構造函數
繼承形成一個原型鏈,其中(Object.prototype)位於其頂部(後面跟着沒有屬性或方法的null),並且所有對象都從中繼承(除非有人將其他更改插入到原型鏈中) 。
If(Object.prototype)是一個對象,它的構造函數是什麼?
我的意思是什麼完成這個表達式才能被評估爲真。
Object.prototype instanceof .....
在JavaScript中,每個對象都從特定原型繼承其屬性和方法,其中原型是對象。Object.prototype的構造函數
繼承形成一個原型鏈,其中(Object.prototype)位於其頂部(後面跟着沒有屬性或方法的null),並且所有對象都從中繼承(除非有人將其他更改插入到原型鏈中) 。
If(Object.prototype)是一個對象,它的構造函數是什麼?
我的意思是什麼完成這個表達式才能被評估爲真。
Object.prototype instanceof .....
從"this and Object Prototypes" book of "You don't know JS"系列凱爾Simpsion
function Foo() {
// ...
}
Foo.prototype.constructor === Foo; // true
var a = new Foo();
a.constructor === Foo; // true
的
Foo.prototype
對象在默認情況下(在聲明時就 片斷1行!)獲取一個公共的,不可枚舉(見第二章3)屬性 調用.constructor
,並且此屬性是對象返回到與對象關聯的 函數(在這種情況下爲Foo)的參考。此外,我們看到由「構造函數」調用new Foo()
創建的對象a
似乎也有一個名爲.constructor
的屬性,其中 類似地指向「創建它的函數」。注意:這不是真的。 a沒有
.constructor
屬性, ,儘管a.constructor
確實解析爲Foo
函數,但 「構造函數」實際上並不意味着「由...構造」,因爲它出現 。我們很快會解釋這種奇怪的。...
「在JavaScript對象有一個內部屬性,在 說明書中的[[Prototype]],這簡直是到另一個 對象的引用。表示爲」。
所以,Object.prototype本身不是一個對象。關於你提到的有關的instanceof具體問題:
var a = new Function();
a.prototype instanceof Object; //true
var b = new String();
b.prototype instanceof Object; //false
好吧,我現在不談論構造函數屬性。我問什麼是用於創建實例(Object.prototype)的函數構造函數。 –
在你展示的例子中,創建實例a的構造函數是Foo。同樣,創建Object.prototype的構造函數是什麼? –
已編輯。看看這是否澄清事情。 – Aydin4ik
[它的海龜一路下滑(https://en.wikipedia.org/wiki/Turtles_all_the_way_down) – Barmar
目前並不需要一個構造函數,它是一個內置的Object就是。你可能會問什麼是* null *的構造函數。 – RobG
null雖然使用了typeof運算符,但它使用的是'object' –