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

1,528 阅读1分钟

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

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

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

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

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