2012-05-31 41 views
2

五個原始JavaScript的數據類型(stringnumberbooleannullundefined),前三個具有相關的構造函數:構造null和undefined

new String("Hello!") 
new Number(40) 
new Boolean(true) 

的構造的對象是該對象的文字包裝。特別地,new String("Hello!") === "Hello!"評估爲false

是否有產生從相應的對象文字不同對象包裝的nullundefined原始數據類型的類似構造?

+0

我不認爲你可以有一個undefined的構造函數 – Gavriel

回答

2

不,沒有,並且考慮到它們所代表的「價值」是沒有意義的。

忽視的事實是typeof運算空===「對象」

According to MDN

JavaScript automatically converts primitives and String objects, so that it's 
possible to use String object methods for primitive strings. 

的解釋只是做的原始一些神奇的自動包裝類中,如果你調用影響的方法原始的,如charAt

+0

當人們問「爲什麼typeof null =='object'',我說」因爲ECMA-262這麼說「我受到批評,但我沒有其他解釋 – RobG

0

原始類型不具有構造函數。字符串,數字和布爾值都有包裝原始類型的對象包裝器。這就是爲什麼js中的字符串對象與您所說的「」不同。 null和未定義的基本類型沒有關聯的Object構造函數。

+0

雖然所有函數都是對象,但並非所有對象都可以是構造函數,只有函數對象可以是構造函數。 – RobG