JavaScript Object (物件)
JavaScript 物件 (object) 是一個複合資料型態 (composite data type),可以儲存不定數量的鍵值對 (key-value paris),而一組鍵值對我們稱做物件的一個屬性 (property)。一個屬性的值 (value) 可以是任何資料型態 (也可以是函數);而屬性的名稱 (key / name) 是一個字串型態。
物件宣告 (Creating Objects)
有兩種方式可以建立一個物件:
Object Constructor (物件建構式)
用 new 關鍵字加上 Object() 來宣告一個物件:
var myObj = new Object();
Object Literal (物件實字)
object literal 是最常用也最方便的語法,用 {}
就可以宣告一個物件:
var myObj = {};
物件的屬性 (Object Properties)
我們可以用 .
運算子來存取物件的屬性。
語法:
objectName.propertyName
例如:
var myObj = {};
// 建立一個叫 color 的屬性,值是 blue
myObj.color = 'blue';
// 存取物件屬性
var myColor = myObj.color;
或用 []
運算子來存取物件的屬性。
語法:
objectName['propertyName']
例如:
var myObj = {};
// 建立一個叫 color 的屬性,值是 blue
myObj['color'] = 'blue';
// 存取物件屬性
var myColor = myObj['color'];
用 []
特別的地方在於,中括號裡面可以是一個變數,例如:
var myObj = {};
var propName = 'color';
// 建立一個叫 color 的屬性,值是 blue
myObj[propName] = 'blue';
// 會輸出 blue
console.log(myObj[propName]);
// 但如果你用 . 運算子
// 會新增一個叫 propName 的屬性,而不是叫 color
myObj.propName = 'blue';
用
[]
運算子除了可以使用變數之外,還有當你的屬性名稱包含空白或點字元的時候。例如 myObj['hello ...'] = 'world'
。用 object literal 我們也可以在宣告物件時,同時建立屬性!
語法:
var obj = {property1: value1, property2: value2, ..., propertyN: valueN}
例如:
// 建立一個物件,這物件有兩個屬性 color 和 height
var myObj = {'color': 'blue', 'height': 101};
object literal 中的屬性名稱的引號可以省略:
// 建立一個物件,這物件有兩個屬性 color 和 height
var myObj = {color: 'blue', height: 101};
物件的方法 (Object Methods)
物件的屬性值如果是一個函數,我們稱它是物件的方法 (method)。
物件的方法可以定義一個物件可以做的動作 (action),你可以像執行函數一樣執行一個物件的方法:
objectName.methodName();
例如:
var me = {
firstName: 'Mike',
lastName: 'Lee',
age: 30,
fullName: function() {
return this.firstName + ' ' + this.lastName;
}
}
// name = 'Mike Lee'
var name = me.fullName();
this
是物件方法中可以使用的關鍵字,this 是一個物件參考,當物件在執行時,可以使用 this 來代表 "自己"。
JavaScript 內建物件 (JavaScript Native Objects)
JavaScript 有一些內建物件,也可以稱作資料型態,包含:
- Number 物件: 數字型態的物件,如整數 (5, 10) 或浮點數 (3.14)
- Boolean 物件: 表示邏輯真假值的物件,真就是 true,假就是 false
- String 字串物件: 任何字元 (Unicode)
- Array 陣列物件: 可用來容納任何其他物件
- Math 物件: 提供許多常用的數學常數及數學計算函數
- Date 物件: 專門處理時間和日期的物件
- RegExp 物件: 即正規表示式 (regular expression) 物件
每一種物件都有各自的屬性 (attribute) 和方法 (method) 可以使用。