ECMAScript中的對(duì)象其實(shí)就是一組數(shù)據(jù)和功能的集合线婚。對(duì)象可以通過執(zhí)行 new 操作符后跟要?jiǎng)?chuàng)建的對(duì)象類型的名稱來創(chuàng)建匈织。而創(chuàng)建 Object 類型的實(shí)例并為其添加屬性和(或)方法,就可以創(chuàng)建自定義對(duì)象授舟,如下所示:
var o = new Object();
這個(gè)語法與Java中創(chuàng)建對(duì)象的語法相似救恨;但在ECMAScript中,如果不給構(gòu)造函數(shù)傳遞參數(shù)岂却,則可以省略后面的那一對(duì)圓括號(hào)忿薇。也就是說裙椭,在像前面這個(gè)示例一樣不傳遞參數(shù)的情況下躏哩,完全可以省略那對(duì)圓括號(hào)(但這不是推薦的做法):
var o = new Object; // 有效署浩,但不推薦省略圓括號(hào)
僅僅創(chuàng)建 Object 的實(shí)例并沒有什么用處,但關(guān)鍵是要理解一個(gè)重要的思想:即在ECMAScript中扫尺,(就像Java中的 java.lang.Object 對(duì)象一樣) Object 類型是所有它的實(shí)例的基礎(chǔ)筋栋。換句話說, Object 類型所具有的任何屬性和方法也同樣存在于更具體的對(duì)象中正驻。
Object 的每個(gè)實(shí)例都具有下列屬性和方法弊攘。
constructor :保存著用于創(chuàng)建當(dāng)前對(duì)象的函數(shù)。對(duì)于前面的例子而言姑曙,構(gòu)造函數(shù)(constructor)就是 Object() 襟交。
hasOwnProperty(propertyName) :用于檢查給定的屬性在當(dāng)前對(duì)象實(shí)例中(而不是在實(shí)例的原型中)是否存在。其中伤靠,作為參數(shù)的屬性名(propertyName )必須以字符串形式指定(例如: o.hasOwnProperty(“name”) )捣域。
isPrototypeOf(object) :用于檢查傳入的對(duì)象是否是另一個(gè)對(duì)象的原型。
propertyIsEnumerable(propertyName) :用于檢查給定的屬性是否能夠使用 for in 語句來枚舉宴合。與 hasOwnProperty() 方法一樣焕梅,作為參數(shù)的屬性名必須以字符串形式指定。
toLocaleString() :返回對(duì)象的字符串表示卦洽,該字符串與執(zhí)行環(huán)境的地區(qū)對(duì)應(yīng)贞言。
toString() :返回對(duì)象的字符串表示。
valueOf() :返回對(duì)象的字符串阀蒂、數(shù)值或布爾值表示该窗。通常與 toString() 方法的返回值相同。