javascript中的對象

一 建立對象:javascript

  1. 對象直接量:由若干名/值對組成的映射表,名/值對中間使用冒號分離,明/值對之間用逗號分離,整個映射變使用花括號括起來。舉例以下:java

var book = {
    "main title": "javascript",                   // 屬性名字裏有空格,必須用字符串表示
    "sub-title": "The Definitive Guide",          // 屬性名字裏連字符,必須使用字符串即是
    "for": "all audiences",                       // "for"是保留字,所以必須用引號
    author: {                                     // 這裏的屬性值是一個對象
        firstName: "David",                       // 注意,這裏的屬性名都沒有引號
        surname: "Flanagan"
    }
};
  1. 經過new建立對象:new運算符建立並初始化一個對象。關鍵字new後跟隨一個函數調用。這裏的函數稱做構造函數,構造函數用以初始化一個新建立的對象。例如:數組

var o = new Object();     // 建立一個空對象,和{}同樣
var a = new Array();      // 建立一個空數組,和[]同樣
  1. 原型:每個javascript對象都和另外一個對象關聯。
    沒有原型的對象爲數很少,Object.prototype就是其中之一。ide

  2. Object.create():它建立一個新對象,其中第一個參數是這個對象的原型,第二個可選參數,用以對對象的屬性進行進一步描述。例如:函數

var o1 = Object.create({x:1, y:2});       // o1繼承了屬性x和y
var o2 = Object.create(null);             // o2不繼承任何屬性和方法

二 屬性的查詢和設置ui

能夠經過點(.)或方括號([])運算符來獲取屬性的值。運算符左側應當是一個表達式,它返回一個對象。對於點來講,右側必須是一個以屬性名稱命名的簡單標識符。對於

方括號來講,方括號內必須是一個計算結果爲字符串的表達式,這個字符串就是屬性的名字:prototype

var author = book.author;          // 獲得book的"author"屬性
var name = author.surname;         // 獲得auhor的"surname"屬性
和查詢屬性的寫法同樣,經過點和方括號也能夠建立屬性或給屬性賦值,但須要將它放在表達式的左側:
book.edition = 6;                    // 給book建立一個名爲"edition"的屬性
book["main title"] = "ECMAScript";   // 給"main title"屬性賦值

三 刪除屬性code

delete運算符能夠刪除對象的屬性。它的操做數應當是一個屬性訪問表達式。delete只是斷開屬性和宿主對象的聯繫,而不會去操做屬性中的屬性。例如:
delete book.author;                  // book再也不有屬性author
delete運算符只能刪除自有屬性,不能刪除繼承屬性。

四 檢測屬性對象

javascript對象能夠看作屬性的集合。須要檢測集合中成員的所屬關係--判斷某個屬性是否存在於某個軟件中。可使用in運算符,hasOwnProperty()和propertyIsEnumerable()方法來完成。

五 枚舉屬性繼承

遍歷對象屬性三種方法:
* 一般使用for/in循環.
* Object.keys().
* Object.getOwnPropertyNames().

六 屬性getter和setter

對象由名字、值和一組特性構成的。屬性值能夠用一兩個方法替代,這兩個方法就是getter和setter。由getter和setter定義的屬性稱做「存儲器屬性」,
不一樣於「數據屬性」,數據屬性只有一個簡單的值。

七 對象的三個屬性

* 原型屬性: 要想檢測一個對象是不是另外一個對象的原型,請使用isPrototypeof()方法。
* 類屬性: 使用classof()函數能夠返回傳遞給它的任意對象的類。
function classof(o) {
    if (o === null ) return "Null";
    if (o === undefined) return "Undefined";
    return Object.prototype.toString().call(o).slice(8, -1);
}

八 序列化對象

對象序列化是指將對象轉換爲字符串,也能夠將字符串還原爲對象。

* JSON.Stringify() 序列化對象
* JSON.parse() 還原js對象
相關文章
相關標籤/搜索