javascript - js对象访问属性有两种方法 ”.”记法和”[ ]“记法,有什么区别吗?
PHP中文网
PHP中文网 2017-04-11 12:29:25
[JavaScript讨论组]

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

PHP中文网
PHP中文网

认证0级讲师

全部回复(5)
迷茫

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

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

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

PHPz

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

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]);//正确
}
PHP中文网

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

伊谢尔伦

语法糖,实现一致

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号