Как указано в обновлении 3 на этом ответе, это обозначение:
var hash = {};
hash[X]
фактически не хэш-объект X; он фактически преобразует X в строку (через .toString(), если это объект или некоторые другие встроенные преобразования для разных примитивных типов), а затем выглядит, что строка вверх, без хэширования, в "hash". Идентификация объекта также не проверяется - если два разных объекта имеют одно и то же преобразование строк, они просто перезаписывают друг друга.
Учитывая это - существуют ли какие-либо эффективные реализации хэшмапов в javascript? (Например, второй результат Google javascript hashmap дает реализацию, которая является O (n) для любой операции. Различные другие результаты игнорируют факт что разные объекты с эквивалентными строковыми представлениями переписывают друг друга.
