JavaScript中Object類型的定義

原文地址:JavaScript中Object類型的定義——一直在路上

ECMAScript中的對象其實就是一組數據和功能的集合。對象可以通過執行new操作符後跟要創建的對象類型的名稱來創建。而創建Object類型的實例併爲其添加屬性和(或)方法,就可以創建自定義對象,如下所示:

var o = new Object();

這個語法與Java中創建對象的語法相似;但在ECMAScript中,如果不給構造函數傳遞參數,則可以省略後面的那一對圓括號。也就是說,在像前面這個示例一樣不傳遞參數的情況下,完全可以省略那對圓括號(但這不是推薦的做法):

var o = new Object; // 有效,但不推薦省略圓括號

僅僅創建Object的實例並沒有什麼用處,但關鍵是要理解一個重要的思想:既在ECMAScript中,(就像Java中的java.lang.Object對象一樣)Object類型是所有它的實例的基礎。換句話說,Object類型所具有的任何屬性和方法也同樣存在於更具體的對象中。

Object的每個實例都具有下列屬性和方法。

  • Constructor:保存着用於創建當前對象的函數。對於前面的例子而言,構造函數(constructor)就是Object( )。
  • hasOwnProperty(propertyName):用於檢查給定的屬性在當前對象實例中(而不是在實例的原型中)是否存在。其中,作爲參數的屬性名(propertyName)必須以字符串形式指定(例如:o.hasOwnProperty(“name”))。
  • isPropertyOf(object):用於檢查傳入的對象是否是另一個對象的原型。
  • propertyIsEnumerable(propertyName):用於檢查給定的屬性是否能夠使用for-in語句來枚舉。與hasOwnProperty( )方法一樣,作爲參數的屬性名必須以字符串形式指定。
  • toLocaleString( ):返回對象的字符串表示,該字符串與執行環境的地區對應。
  • toString( ):返回對象的字符串表示。
  • valueOf( ):返回對象的字符串、數值或布爾值表示。通常與toString( )方法的返回值相同。

由於在ECMAScript中Object是所有對象的基礎,因此所有對象都具有這些基本的屬性和方法。

從技術角度講,ECMA-262中對象的行爲不一定適用於JavaScript中的其他對象。瀏覽器環境中的對象,比如BOM和DOM中的對象,都屬於宿主對象,因爲它們是由宿主實現提供和定義的。ECMA-262不負責定義宿主對象,因此宿主對象可能會也可能不會繼承Object。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章