1.JS對象
對象和數組很相似,數組是通過索引來訪問和修改數據,對象是通過屬性來訪問和修改數據的。
這是一個示例對象:
var cat = {
"name": "Whiskers",
"legs": 4,
"tails": 1,
"enemies": ["Water", "Dogs"]
};
對象適合用來存儲結構化數據,就和真實世界的對象一模一樣,比如一隻貓。
有兩種方式訪問對象屬性,一個是點操作符(.),一個是中括號操作符([])。
當你知道屬性的名稱的時候,使用點操作符。
這是一個使用點操作符讀取對象屬性的例子:
var myObj = {
prop1: "val1",
prop2: "val2"
};
var prop1val = myObj.prop1; // val1
var prop2val = myObj.prop2; // val2
第二種訪問對象的方式就是中括號操作符([]),如果你想訪問的屬性的名稱有一個空格,這時你只能使用中括號操作符([])。
這是一個使用中括號操作符([])讀取對象屬性的例子:
var myObj = {
"Space Name": "Kirk",
"More Space": "Spock"
};
myObj["Space Name"]; // Kirk
myObj['More Space']; // Spock
//提示:屬性名稱中如果有空格,必須把屬性名稱用單引號或雙引號包裹起來。
中括號操作符的另一個使用方式是用變量來訪問一個屬性。當你需要遍歷對象的屬性列表或查表時,這種方式極爲有用。
這有一個使用變量來訪問屬性的例子:
var someProp = "propName";
var myObj = {
propName: "Some Value"
}
myObj[someProp]; // "Some Value"
還有更多:
var myDog = "Hunter";
var dogs = {
Fido: "Mutt", Hunter: "Doberman", Snoopie: "Beagle"
}
var breed = dogs[myDog];
console.log(breed)// "Doberman"
//提示:當我們通過變量名訪問屬性的時候,不需要給變量名包裹引號。因爲實際上我們使用的是變量的值,而不是變量的名稱
有時檢查一個對象屬性是否存在是非常有用的,我們可以用.hasOwnProperty(propname)方法來檢查對象是否有該屬性。如果有返回true,反之返回 false。
舉例
var myObj = {
top: "hat",
bottom: "pants"
};
myObj.hasOwnProperty("top"); // true
myObj.hasOwnProperty("middle"); // false
我們同樣可以刪除對象的屬性,例如:
delete ourDog.bark;
你也可以像更改屬性一樣給對象添加屬性。
看看我們是如何給ourDog添加 “bark”屬性:
ourDog.bark = "bow-wow";
//或者
ourDog["bark"] = "bow-wow";