js对象访问属性有两种方法 ”.”记法和”[ ]“记法,有什么区别吗?

Salamander
  • 6.6k

js内部是怎么存储属性的?

评论
阅读 3.9k
5 个回答

你可以把 js 对象当作一个 Hashtable,所以其实 .[] 没多大区别,作用完全相同。但是

  • 一般情况下建议使用 . 写法,这样比较接近其它语言的面向对象写法,易读

  • 如果属性名是动态的(比如变量中),只能使用 [] 写法

从功能上看,这两种访问对象属性的方法没有任何区别。
但方括号语法的主要优点是可以通过变量来访问属性,如

var person={name:"myName"};
var proName="name";
console.log(person[proName]);

如果属性名中包含会导致语法错误的字符,也只能使用方括号语法,如:

var person={"na,me":"myName"};
console.log(person["na,me"]);

. 是你知道这个这个对象的具体属性名,然后可以通过 .propertyName 来获取属性值,如数组的的lenght属性;
[ ]是你不知道这个对像的属性名;

//示例代码
for(var key in data){
    console.log(key + ':' + data.key);//错误 undefined
    console.log(key + ':' + data[key]);//正确
}

没有什么区别,当你不能使用.的时候比如key本身包含.或key是个变量就要使用[]。
内部具体存储是如何不知道,说是以map的形式。

语法糖,实现一致

.语法不支持非法token属性名

宣传栏