我对 v8 的内部结构以及如何Map
在引擎盖下实现感到好奇。对比一下Map
,javascript 对象不能有对象作为键。据我了解,它Map
以经典的哈希映射方式实现查找。一些散列函数将输入键映射到某个输出整数,该整数用作数组中的索引。然后在数组溢出时进行一些动态调整大小,并且在数组的每个 bin 中都有一些链表。可能v8的地图细节稍微复杂一些,涉及到对小Map
s的一些优化?很想知道实际的实现与我上面的草图有多大不同。基于以下假设Map
在引擎盖下像这样工作,它如何从普通对象映射到数组中的键?我猜它把指针地址取模到数组中?
好奇深入挖掘。