1、物件
上一篇文章寫了基本資料型別,還有的一種很重要的資料型別(引用型別)就是 - 物件。
物件就是一組“鍵值對”(key-value)的集合,是一種無序的複合資料集合。
var obj = {
foo: 'Hello',
bar: 'World',
100: true,
};
obj.foo // 'Hello'
obj[100] //true 如果鍵名是數值,會被自動轉為字串(等價於obj.['100'] )
2、屬性和方法
物件的每一個鍵名又稱為“屬性”(property),它的“鍵值”可以是任何資料型別。如果一個屬性的值為函式,通常把這個屬性稱為“方法”,它可以像函式那樣呼叫。
var obj = {
foo: function (x) {
return 2 * x;
}
};
obj.foo(2) // 4 呼叫foo方法
3、物件的引用
物件透過引用來傳遞。即若不同的變數名指向同一個物件,那麼它們都是這個物件的引用,也就是說指向同一個記憶體地址。修改其中一個變數,會影響到其他所有變數。
var o1 = {};
var o2 = o1;
o1.a = 1;
o2.a // 1
o2.b = 2;
o1.b // 2
這裡o1
和o2
指向同一個物件,因此為其中任何一個變數新增屬性,另一個變數都可以讀寫該屬性。
同時若取消某一個變數對於原物件的引用,不會影響到另一個變數
var o1 = {};
var o2 = o1;
o1 = 1;
o2 // {}
o1
和o2
指向同一個物件,然後o1的值變為1,這時不會對o2產生影響,o2還是指向原來的那個物件。
變數a、b、c 每個都引用一個不同的空物件
var a = {};
var b = {};
var c = {};
4、物件的操作
讀取
讀取物件的值,有兩種方法,一種是使用點運算子,還有一種是使用方括號運算子
var obj = {
p: 'Hello'
};
obj.p // "Hello"
obj['p'] // "Hello"
優先考慮使用.
表示,因為它更緊湊且可讀性更好
賦值
var obj = { p: 1 };
// 等價於
var obj = {};
obj.p = 1;
獲取物件鍵名
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);// ['key1', 'key2']
刪除
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
注意的是,delete
命令只能刪除物件本身的屬性,無法刪除繼承的屬性, 這點會在後面寫原型鏈的時候提到
本作品採用《CC 協議》,轉載必須註明作者和本文連結