淺談JS中中括號([])用法
阿新 • • 發佈:2019-02-11
中括號運算子總是能代替點運算子。但點運算子卻不一定能全部代替中括號運算子。
中括號運算子可以用字串變數的內容作為屬性名。點運算子不能。
中括號運算子可以用純數字為屬性名。點運算子不能。
中括號運算子可以用js的關鍵字和保留字作為屬性名。點運算子不能。
例一:
/**
* 在JavaScript裡面 . 可以理解成 的
* 下面的例子中,a.b表示物件a的屬性b,既可以設定也可以讀取
* object[key]=>key為常量時,object[key]等價於object.key,例如:a.b == a['b']
* 特殊的,object[key]=>key為變數時,只能用中括號形式
*/
var a = {};
// a.b = 1;
a['b'] = 1;
c = a.b;
// c = a['b'];
alert(c);
例二:
var obj = {};
// 為obj新增一個屬性name,name是合法的識別符號,即也可以通過obj.name方式來定義
obj['name'] = 'jack';
// 為obj新增一個屬性2a,2a不是合法的識別符號(不能以數字開頭),不能通過obj.2a來定義
obj['2a'] = 'test';
例三:
var obj = {name:'jack'};
obj['2a'] = 'test';
obj['name']; // --> jack
obj['2a']; // --> test (不能通過obj.2a獲取)
總結:常量用點,變數就用中括號。
中括號運算子可以用字串變數的內容作為屬性名。點運算子不能。
中括號運算子可以用純數字為屬性名。點運算子不能。
中括號運算子可以用js的關鍵字和保留字作為屬性名。點運算子不能。
例一:
/**
* 在JavaScript裡面 . 可以理解成 的
* 下面的例子中,a.b表示物件a的屬性b,既可以設定也可以讀取
* object[key]=>key為常量時,object[key]等價於object.key,例如:a.b == a['b']
* 特殊的,object[key]=>key為變數時,只能用中括號形式
*/
var a = {};
// a.b = 1;
a['b'] = 1;
c = a.b;
// c = a['b'];
alert(c);
例二:
var obj = {};
// 為obj新增一個屬性name,name是合法的識別符號,即也可以通過obj.name方式來定義
obj['name'] = 'jack';
// 為obj新增一個屬性2a,2a不是合法的識別符號(不能以數字開頭),不能通過obj.2a來定義
obj['2a'] = 'test';
例三:
var obj = {name:'jack'};
obj['2a'] = 'test';
obj['name']; // --> jack
obj['2a']; // --> test (不能通過obj.2a獲取)
總結:常量用點,變數就用中括號。