js内部是怎么存储属性的?
你可以把 js 对象当作一个 Hashtable,所以其实 .
和 []
没多大区别,作用完全相同。但是
一般情况下建议使用
.
写法,这样比较接近其它语言的面向对象写法,易读如果属性名是动态的(比如变量中),只能使用
[]
写法
没有什么区别,当你不能使用.的时候比如key本身包含.或key是个变量就要使用[]。
内部具体存储是如何不知道,说是以map的形式。
从功能上看,这两种访问对象属性的方法没有任何区别。
但方括号语法的主要优点是可以通过变量来访问属性,如
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]);//正确
}
语法糖,实现一致
.语法不支持非法token属性名