关于JavaScript中的Object的Key必定是字符串的思考

前几天在学习Map和Object时,突然想到一个问题: 你们有思考过Object的key为何要用toString()方法转换成字符串吗?html

今上午查阅了一下资料,获得了一个大体的结论: 在js中的Object,本质上是键值对的集合,是基于Hash表存储变量的。 能够经过Hash表的散列算法进行快速查找。 由于变量和对象中的属性是随时可变的,因此,对象所占用的空间必须支持随时调整。从这个角度说,Hash表也是比较契合这个特性的。算法

而ES6中的Map则是为了弥补Object的key只能是str类型。学习

什么是Hash表? 答:hash表其实就是管理一对对<Key,Value>这样的结构的表。code

参考文献: JavaScript系列-----对象基于哈希存储(<Key,Value>之Key篇)htm

相关文章
相关标签/搜索