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