前几天在学习Map和Object时,忽然想到一个问题: 大家有思考过Object的key为什么要用toString()方法转换成字符串吗?
今上午查阅了一下资料,得到了一个大致的结论:
在js中的Object,本质上是键值对的集合,是基于Hash表存储变量的。
可以通过Hash表的散列算法进行快速查找。
因为变量和对象中的属性是随时可变的,所以,对象所占用的空间必须支持随时调整。从这个角度说,Hash表也是比较契合这个特性的。
而ES6中的Map则是为了弥补Object的key只能是str类型。
什么是Hash表? 答:hash表其实就是管理一对对<Key,Value>这样的结构的表。