2010-06-14 52 views
3

在JavaScript中,您可以調用函數作爲函數或構造函數。例如,你可以這樣做:與原始值相反,數值/布爾值/字符串對象的用途是什麼?

myObject = new Number(13); 
myPrimitiveValue = Number(13); 

或者乾脆

myPrimitiveValue = 13; 

我理解的結果之間的差異。你能解釋一下在哪個合理的情況下創建一個數字,布爾值或字符串作爲對象是可取的?例如,設置新屬性的能力(這是你可以在對象上做的事情,但對原始值無法做到)對於包含數字/布爾/字符串的對象幾乎總是一個壞主意。爲什麼我需要一個數字/布爾/字符串對象?

回答

1

您很少必須爲基本數據類型創建對象。

Number object的Microsoft文檔:

「Number對象是 數值數據的包裝器 的主要目的Number對象是以收集其 屬性到一個對象,並 。允許通過toString方法將數字轉換爲 字符串 Number對象與 Number數據類型相似,但它們具有不同的屬性和方法

您很少需要明確構建一個數字 對象。號碼數據 類型應該在大多數 的情況下使用。由於Number對象 與數字數據 類型進行互操作,所有的Nu​​mber對象的方法和 屬性可用於Number類型的變量 。」

+0

感謝你爲這個,它有一定道理。但是這是一個有點有點奇怪,你不覺得嗎?考慮其他腳本語言,例如lua,在那裏沒有這樣的東西,表格(jscript對象的模擬)是一個表和數字/字符串/布爾是數字/字符串布爾。對比很不同的語言是不公平的,但是javascript對此很陌生。閱讀ECMAScript規範我有一個明顯的感覺,它是事後編寫的,描述了一些已經存在的實現。 – 2010-06-14 09:28:44

+0

@zes pri:也許這些包裝器受到了Java中類似的包裝的啓發,但它們在腳本語言中並沒有那麼有用。您說得對,該規範是基於現有的實現,JavaScript於1995年12月宣佈,並且規範於1997年6月通過。http://en.wikipedia.org/wiki/ECMAScript – Guffa 2010-06-14 10:05:59