1. 相同點
[ ] 運算符 和 點運算符 都可以擷取到 obj 的屬性值
2. 差別
2.1 [ ] 運算符可以使用字元串變量的内容作為屬性名,點運算符不能;
var data = {
name: 'haha',
age: 18,
3: '男'
}
var key = 'name'
console.log(data.key) // undefined
console.log(data[key]) // haha
2.2 [ ] 運算符可以用純數字作為屬性名,點運算符不能;
var data = {
name: 'haha',
age: 18,
3: '男'
}
console.log(data[3]) // 男
console.log(data.3) // Uncaught SyntaxError: missing ) after argument list
2.3 [ ] 可以動态通路的屬性名,可以在程式運作時建立和修改屬性,點操作符就不行!
( 即 [ ] 可以動态設定和擷取)
var customer = {};
var addr = ['武漢','上海','南京','深圳'];
for(i = 0; i < 4; i++){
customer["address" + i] = addr[i];
}
console.log(customer); // {address0: "武漢", address1: "上海", address2: "南京", address3: "深圳"}
var str = "";
for(i = 0; i < 4; i++){
str += customer["address" + i] + "\t";
}
console.log(str); // 武漢 上海 南京 深圳
2.4 如果屬性名中包含會導緻文法錯誤的字元,或者屬性名是關鍵字或者保留字,也可以使用 [ ] 表示法
(屬性名是關鍵字或者保留字,都可以點文法不嚴密,不報錯,寫法提示有錯);
總結:對于一般的常量就使用 . 運算符,對于其他的使用 [ ] 運算符。
3. 關于 JavaScript 對象拓展
JavaScript 中的所有事物都是對象:字元串、數值、數組、函數...
此外,JavaScript 允許自定義對象。
所有事物都是對象
- 布爾型可以是一個對象。
- 數字型可以是一個對象。
- 字元串也可以是一個對象。
- 日期是一個對象。
- 數學和正規表達式也是對象。
- 數組是一個對象。
- 甚至函數也可以是對象。