![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICN4ETMfdHLkVGepZ2XtxSZ6l2clJ3LcBnYldHL0FWby9mZvwVPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsAjMfd3bkFGazxCMx8VesATMfhHLlN3XnxCMz8FdsYkRGZkRG9lcvx2bjxSa2EWNhJTW1AlUxEFeVRUUfRHelRHL0EzXlpXazxyayFWbyVGdhd3LcV2Zh1Wa9M3clN2byBXLzN3btg3PwJWZ35SM3czN3YWMiJjM0ITOxUzYxYzXwQTO0gDM0IzLcJTMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.webp)
ECMAScript中的Object的對象類型,是一種比較複雜的複合資料類型。它本質上包含了部分資料類型,比如數組、函數資料類型、DOM其實等都屬于Object對象。對象可以通過執行new操作符後跟要建立的對象類型的名稱來建立。而建立Object類型的執行個體并為其添加屬性或方法,就可以自定義對象,如下所示:
這個文法其實和Java中建立對象的文法類似;不過在ECMAScript中,對象建立有個特點,如果不需要傳入參數的話,則可以省略後面的括号。也就是說,類似于上述的案例,在不傳遞參數的情況下,可以這樣去寫:
僅僅建立 Object 的執行個體并沒有什麼用處,但關鍵是要了解一個重要的思想:即在 ECMAScript中,(就像Java中的 java.lang.Object 對象一樣) Object 類型是所有它 的執行個體的基礎。換句話說, Object 類型所具有的任何屬性和方法也同樣存在于更具 體的對象中。
Object 的每個執行個體都具有下列屬性和方法:
constructor :儲存着用于建立目前對象的函數。對于前面的例子而言,構造函數(constructor)就是 Object() 。
hasOwnProperty(propertyName) :用于檢查給定的屬性在目前對象執行個體中(而不是在執行個體的原型中)是否存在。其中,作為參數的屬性名(propertyName )必須以字元串形式指定(例如:o.hasOwnProperty(“name”) )。
isPrototypeOf(object) :用于檢查傳入的對象是否是另一個對象的原型。
propertyIsEnumerable(propertyName) :用于檢查給定的屬性是否能夠使用 for in 語句來枚舉。與 hasOwnProperty() 方法一樣,作為參數的屬性名必須以字元串形式指定。
toLocaleString() :傳回對象的字元串表示,該字元串與執行環境的地區對應。
toString() :傳回對象的字元串表示。
valueOf() :傳回對象的字元串、數值或布爾值表示。通常與 toString() 方法的傳回值相同。