js操作对象属性用点和用中括号有什么不同?

比如:
var a = {};
有时候要用:
a.b = 1;
c = a.b;
alert(c);
可是有时候却要用:
a[b] = 1;
c = a[b];
alert(c);
这两种写法有什么区别吗
那为什么有时候只有前者能用或是后者能用?

一、功能不同

1、用点:表示定义一个对象,大部分情况下要有成对的属性和值,或是函数。

2、用中括号:表示一个数组,也可以理解为一个数组对象。 

二、语法不同

1、用点: var LangShen = {"Name":"Langshen","AGE":"28"}。langShen.Name。在JSON数据结构、写函数组的时候中经常用。

2、用中括号:var LangShen = [ "Name","LangShen","AGE","28" ];每个值或函数,都是独立的,多个值之间只用,(逗号)隔开,因为是数组对象。


三、访问方式不同

1、用点:对象,访问时,用.(点)来层层访问。

2、用中括号:访问时,也是和数组一样,alert( LangShen[0] ); 


参考资料来源:百度百科-javascript

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-02-27
var test ={name:1}
用点的时候,后面需要是一个指定的属性名称,譬如说 test.name,不需要用引号括起来,因为默认name就是test里面的属性,但是如果写 var obj = name 。test.obj就是不正确的,因为obj这个时候是被当成一个固定的字符串,不是变量。

用中括号的时候 ,括号里面可以是变量或者字符串,譬如说,var obj = "name",test[obj]会自动识别成obj["name"],因为中括号会计算一次生成字符串访问。当然可以直接写obj["name"],

其实 test.name 最终也会按照 test["name"]去执行的

所以用点的时候后面一定要是一个指定的 属性名,用[]时候后面一定是一个变量或者固定属性名的字符串。
有误请指正,谢谢!本回答被网友采纳
第2个回答  2017-08-18

    中括号运算符总是能代替点运算符但点运算符却不一定能全部代替中括号运算符。

    中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。

    中括号运算符可以用纯数字为属性名。点运算符不能。

    中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能。


    ps:点号后加标识符(静态的)

    中括号放字符串,字符串可以是动态的,obj['string'+variable]

    如果是静态的还是用点号方便

第3个回答  2016-07-30
中括号运算符总是能代替点运算符。但点运算符却不一定能全部代替中括号运算符。

中括号运算符可以用字符串变量的内容作为属性名。点运算符不能。

中括号运算符可以用纯数字为属性名。点运算符不能。

中括号运算符可以用js的关键字和保留字作为属性名。点运算符不能
第4个回答  2014-09-23
不考虑[]用作数组或集合下标使用的情况,单针对某个对象,这两种写法本质是一样的。
但是第2种写法可以使用变量作为属性名,在实际使用过程中非常灵活,比如可以写出很通用的代码,而不用考虑具体对象的结构。追问

那为什么有时候,用点才能取到值,有时候却要用中括号呢?

追答

不考虑[]用作数组或集合下标使用的情况,单针对某个对象,这两种写法本质是一样的。

你能举个例子, 只能用点或只能用中括号取属性值吗?

本回答被网友采纳
相似回答