正如在这个答案的更新3中所表明的那样,这种表示法:
var hash = {};
hash[X]
Run Code Online (Sandbox Code Playgroud)
实际上并不散列对象X
; 它实际上只是转换X
为一个字符串(通过.toString()
它是一个对象,或者是各种基本类型的一些其他内置转换),然后在" hash
"中查找该字符串,而不对其进行散列.也不检查对象相等性 - 如果两个不同的对象具有相同的字符串转换,它们将仅相互覆盖.
鉴于此 - 在JavaScript中是否有任何有效的哈希映射实现?(例如,第二个Google结果javascript hashmap
产生一个实现,对于任何操作都是O(n).各种其他结果忽略了具有等效字符串表示的不同对象相互覆盖的事实.