1.0
javascript访问对象属性有两种方法,第一是点符号法,第二是方括号表示法,括号之间的值可以是任何表达式。因此,如果属性名称存储在变量中,则可以使用括号表示法。
在javascript中,我们使用以下两种方法访问对象属性:
- 点符号 -
foo.bar
- 方括号 -
foo[someVar]
或foo["string"]
但只有第二种情况允许动态访问属性:
var foo = { pName1 : 1, pName2 : [1, {foo : bar }, 3] , ...}
var name = "pName"
var num = 1;
foo[name + num]; // 1
// --
var a = 2;
var b = 1;
var c = "foo";
foo[name + a][b][c]; // bar
因此, 要使用变量动态访问对象属性,可以使用第二种方法“方括号法”,如下所示:
let foo = {
bar: 'Hello World'
};
let prop = 'bar';
foo[prop];
2.0
为了减少代码量,有时需要用变量名充当对象的属性,方便调用。
作为对象属性时,有两种方式存取。一是点号(.)运算符,一是中括号([])运算符
var p = {name:"Jack"};
alert(p.name);//点号
alert(p['name']);//中括号
1、点号要求后面的运算元是合法的标识符(即合法的变量命名),对于不合法的不可以使用
2、中括号要求的则是一个字符串即可,不必是合法的变量命名。如4p是不合法的变量命名(因为以数字开头),但却可以作为对象属性名(前提是字符串)
var p = {
"4p":"Jack",
"-3":"hello",
name:"Tom",
"我":"me",
"我 们":"we"
};
alert(p.4p);//不合法,语法分析时报错,不能以数字开头
alert(p.我);//合法,输出"me"
alert(p.我 们);//不合法,语法分析时报错("我"和"们"之间有个空格)
alert(p["我 们"]);//合法,输出"we",虽然"我"和"们"之间有空格,仍然可以用[]存取
alert(p['4p']);//合法,输出"Jack" alert(p.name);//合法,输出"Tom"