主要区别:
1、中括号法可以用变量作为属性名,而点方法不可以
var obj = {};
obj.name = '张三';
var myName = 'name';
console.log(obj.myName);//undefined,访问不到对应的属性
console.log(obj[myName]);//张三
2、中括号法可以用数字作为属性名,而点语法不可以
var obj = { 0: '零' };
console.log(obj.0);//报错
console.log(obj[0]);//零
console.log(obj['0']);//零
3、中括号法可以使用js的关键字和保留字作为属性名,而点语法不可以(尽量避免在变量或者属性中使用关键字或保留字);
var obj = {
'34': {
'可能错误原因': '无',
'错误代码': 'D000',
'错误位置': '接收方成员行(MEMBER)',
'错误描述': '无',
},
8: {
number: 8
},
'name': {
'liu': 'shenghua'
}
};
// console.log(obj.34);//语法报错
// console.log(obj.'34');//语法报错
console.log(obj[34]);//正常获取到;
console.log(obj['34']);//正常获取到; 数字可以是number和string
console.log(obj[8]);//正常获取到;
console.log(obj['8']);//正常获取到;
console.log(obj['name']);//正常获取到;
console.log(obj[name]);//undefined;[]里面必须是数字,变量,字符串,但是不能是纯粹的键值
console.log(obj.name);//正常获取到;