通常访问对象属性有两种方法:一种是点操作符(.);另一种是中括号操作符([])
不知道大家会不会有疑惑,反正我之前的时候一直困惑,不清楚什么时候用.什么时候用[]去访问属性。后来我去查阅了一些资料,差不多弄懂了里面的机制。
今天我就据我自己的理解来梳理一下两者的用法和区别。
1.点操作符
当你知道属性名称的时候,使用点操作符(.)
var obj = {
name:'Aa',
age:18
}
var a = obj.name
console.log(a);//Aa
console.log(obj['name']);//Aa
2.中括号运算符
如果你想访问的属性的名称有一个空格,这时你只能使用中括号操作符([])
提示:属性名称中如果有空格,必须把属性名称用单引号或双引号包裹起来
var person = {
"first name":'zhang san'
}
var b =person["first name"]
console.log(b); //zhang san
3.区别
点运算符之后书写的属性名会被认为是标识符,中括号运算符内的则被转为字符串值的式子。
两种运算符的选择都没有问题,点运算符较为简洁,中括号运算符通用性更高。
能使用点运算符的一定可以使用中括号运算符,反之不成立。
下面列一下他们的区别,即只能使用中括号运算符的几种情况:
1、使用了不能作为标识符的属性名的情况。
2、将变量作为属性名使用的情况,中括号法可以用变量作为属性名,而点方法不可以。
var obj = {};
obj.name = '张三';
var myName = 'name';
console.log(obj.myName);//undefined,访问不到对应的属性
console.log(obj[myName]);//张三
3、将表达式的求值结果作为属性名使用的情况