javascript object筆記
更新日期:
Object
javascript的object是key-value pair
因此key有時會被叫作property, member, etc…
value 可以是integer, true, false, function, etc
√ 定義
1 | var object = {} // empty object |
✘ 定義
1 | var object = { my name : "jason" } // key 如有空格要'' |
存取Object成員(Access object’s property)
利用.
作分隔,注意提取未定義的property 會回傳undefined value1
2
3var object = { name : "jason" };
object.name // jason
object.age // undefined
因此可以利用undefined value 檢查某object 成員有沒有被定義1
2object.name === undefined // false
object.age === undefined // true
也可以利用[]
(Object literal), 適用於有-的key1
2
3
4var object = { "my-name": "jason", "image-list" : "image.png" };
object.image-list; // reference error: list
object.my-name; // NaN
object["my-name"]; // jason
Object 可以隋意新加成員1
2
3var object = { name : "jason" };
object.nickname = "tresa";
object.nickname; // "tresa"
檢查type
Javascript 使用String定義type1
2var object = { name : "jason" };
typeof object; // "object"
檢查Array
不過Array的type也是’object’, 但可以利用Array.isArray()檢查 (ECMAScript >= 5)1
2
3var array = ["jason", "object"]
typeof array; // "object"
Array.isArray(array) // true
檢查一個variable 有沒有value
可以利用typeof 去避免ReferenceError: Can’t find variable: list
注意: 所有variable 即使定義了,沒有acess前value都是undefined
1 | var x; |
另外方法檢查undefined
From Mozilla
The global undefined property represents the primitive value undefined. It is one of JavaScript’s primitive types.
由於undefined的type是’undefined’,因於檢查某成員有沒有被定義也可以用typeof1
2var object = { name : "jason" };
typeof object.age === 'undefined' // true
檢查Empty object
利用for ... in ...
檢定有沒有property name, 有則return true1
2
3
4
5
6
7
8
9
10
11
12
13
14var emptyObject = {};
var student = { name : "jason", job : "student" };
function isEmptyObject(testObject){
var property;
for (property in testObject){
return true;
}
return false;
}
isEmptyObject(emptyObject); // false
isEmptyObject(student); // true
Array
存取每個element
傳統方法, 利用length
1
2
3for (var i = 0 ; i < array.length; i++ ){
console.log(array[i]);
}
利用 forEach
(ECMAScript >= 5)
接受 callback(element, index, processingArray)1
2
3array.forEach(function(element, index, processingArray){
console.log(element);
});
利用for ...of...
(ECMAScript >= 6)1
2
3for (var e of array){
console.log(e);
}