<p>
ECMAScript 中的對象其實就是一組數據和功能的集合。對象可以通過執行 new 操作符后跟要創建的對象類型的名稱來創建。而創建 Object 類型的實例并為其添加屬性和(或)方法,就可以創建自定義對象,如下所示:
</p>
<pre>var o = new Object();</pre>
<p>
這個語法與 Java 中創建對象的語法相似;但在 ECMAScript 中,如果不給構造函數傳遞參數,則可以省略后面的那一對圓括號。也就是說,在像前面這個示例一樣不傳遞參數的情況下,完全可以省略那對圓括號(但這不是推薦的做法):
</p>
<pre>var o = new Object; // 有效,但不推薦省略圓括號</pre>
<p>
僅僅創建 Object 的實例并沒有什么用處,但關鍵是要理解一個重要的思想:即在 ECMAScript 中,(就像 Java 中的 java.lang.Object 對象一樣) Object 類型是所有它的實例的基礎。換句話說,Object 類型所具有的任何屬性和方法也同樣存在于更具體的對象中。
</p>
<p>
Object 的每個實例都具有下列屬性和方法。
</p>
<ul>
<li>
constructor:保存著用于創建當前對象的函數。對于前面的例子而言,構造函數(constructor)就是 Object()。
</li>
<li>
hasOwnProperty(propertyName):用于檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,作為參數的屬性名(propertyName)必須以字符串形式指定(例如: <code>o.hasOwnProperty("name")</code>)。
</li>
<li>
isPrototypeOf(object):用于檢查傳入的對象是否是傳入對象的原型(第 5 章將討論原型) 。
</li>
<li>
propertyIsEnumerable(propertyName):用于檢查給定的屬性是否能夠使用 for-in 語句(本章后面將會討論)來枚舉。與 hasOwnProperty()方法一樣,作為參數的屬性名必須以字符串形式指定。
</li>
<li>
toLocaleString():返回對象的字符串表示,該字符串與執行環境的地區對應。
</li>
<li>
toString():返回對象的字符串表示。
</li>
<li>
valueOf():返回對象的字符串、數值或布爾值表示。通常與 toString()方法的返回值相同。
</li>
</ul>
由于在 ECMAScript 中 Object 是所有對象的基礎,因此所有對象都具有這些基本的屬性和方法。第 5 章和第 6 章將詳細介紹 Object 與其他對象的關系。<br />
<p>
</p>
<blockquote>
從技術角度講, ECMA-262 中對象的行為不一定適用于 JavaScript 中的其他對象。瀏覽器環境中的對象,比如 BOM 和 DOM 中的對象,都屬于宿主對象,因為它們是由宿主實現提供和定義的。 ECMA-262 不負責定義宿主對象,因此宿主對象可能會也可能不會繼承 Object。
</blockquote>
<p>
</p>