点运算符(.)和中括号运算符([])

878 阅读2分钟

通常访问对象属性有两种方法:一种是点操作符(.);另一种是中括号操作符([])

不知道大家会不会有疑惑,反正我之前的时候一直困惑,不清楚什么时候用.什么时候用[]去访问属性。后来我去查阅了一些资料,差不多弄懂了里面的机制。
今天我就据我自己的理解来梳理一下两者的用法和区别。

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、将表达式的求值结果作为属性名使用的情况