JavaScript參考型別之Object類,javascriptobject

來源:互聯網
上載者:User

JavaScript參考型別之Object類,javascriptobject


    ECMAScript中的Object類跟Java中的Object類相似,ECMAScript中的所有類都由這個類繼承而來,Object類中的所有屬性和方法都會出現在其它類中,所以理解Object類,就可以更好的理解其它類。


對象的建立


    JavaScript的對象是屬性的容器,其中每個屬性都擁有名字和值。屬性的名字可以是包括Null 字元串在內的任一字元串。屬性值可以是除undefined值之外的任何值。

 

    JavaScript裡的對象是無類型的。它對新屬性的名字和屬性的值沒有限制。對象和適用於彙集和管理資料。對象可以包含其他對象,所以它們可以容易地表示成樹狀或圖形結構。

 

    Object類型用於建立自訂對象(執行個體),建立方式有兩種:


new後面加Object構造方法

var cat = new Object();cat.name = "tomcat";cat.age = 3;alert("cat's name is " + cat.name + " and its age is " + cat.age);

    對象屬性的訪問可以直接採用 對象名.屬性名稱 的方式。


對象字面量標記法

<pre name="code" class="javascript">var dog = {"name":"hotdog","age":3}


    裡面的屬性名稱和屬性值採用key:value鍵值對的形式,其中key上面的引號通常可以省略掉。

var dog = {name:"hotdog",age:3}alert("dog's name is " + dog["name"] + " and its age is " + dog["age"]);

    對象屬性的方式也可以採用 對象名[屬性名稱] 的方式。


對象屬性的訪問


    對象屬性的訪問方式有兩種:點標記法和方括弧標記法。

  • 點標記法  對象名.屬性名稱
  • 方括弧標記法  對象名[屬性名稱]


方括弧標記法的優點
  • 可以通過變數來訪問屬性 

var  pName="name";alert(cat[pName]);

  • 如果屬性名稱中包含會導致語法錯誤的字元,或者屬性名稱使用的是關鍵字或保留字,也可以用方括弧標記法。
cat["lovely brother"]="Tom"; 

    屬性名稱中包含空格所以不能使用點標記法訪問它.

var catObj = {name : "tomcat","lovely brother" : "tom"}var pName = "name";alert(catObj[pName]); // output tomcatalert(catObj["lovely brother"]); // output tom

點標記法優點

   

    如果屬性的層次比較深的時候,使用方括弧標記法表示麻煩;但是使用點標記法即可方便的一層層的訪問到需要的屬性。


var animals = {dog : {name : "hotdog",age : 4},cat : {name : "tomcat",age : 3}}

點標記法 訪問 dog 的 name 屬性

alert(animals.dog.name);

 

方括弧標記法 訪問 dog 的 name 屬性

alert(animals["dog"]["name"]);

    使用方括弧標記法,如果屬性比較多的時候,必須挨個的使用[ 和 ],且還要用引號引起屬性名稱,不如點標記法的直接。

 

    比較完兩種方式:訪問屬性推薦使用點標記法,除非沒辦法用點標記法的時候選擇用方括弧訪問


Object類的屬性


Object類具有下列屬性:

  • constructor --- 對建立對象的函數的引用。對於Object類,該指標指向原始的object() 函數。
  • prototype --- 對該對象的對象原型的引用。對於所有的類,它預設返回Object對象的一個執行個體。

var obj = new Object();alert(obj.constructor);// output /*function Object() {    [native code]}*/

Object類的方法


Object類具有如下方法:

  • hasOwnProperty --- 判斷對象是否有某個特定的屬性。必須用字串指定該屬性(例如:obj.hasOwnProperty(“name”))。
  • isPrototypeOf(object) --- 判斷該對象是否為另一個對象的原型。
  • propertyIsEnumerable(property) --- 判斷給定的屬性是否可以用for…in 語句進行枚舉。
  • toString() --- 返回該對象的原始字串表示。
  • valueOf() --- 返回最適合該對象的原始值。

var tomObj = {name : "tomcat",age : 4}alert(tomObj.hasOwnProperty("name")); // output truealert(tomObj.hasOwnProperty("sex")); // output falsealert(tomObj.toString()); // [object Object]alert(tomObj.valueOf());  // [object Object]


    hasOwnProperty()、isPrototypeOf(object)、propertyIsEnumerable(property) 這三個方法在講了原型prototype之後再細述,這裡不做介紹了。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.