«Я полагаю, что большинство браузеров реализуют его одинаково, если нет, то почему? Есть ли требование, как реализовать его в спецификациях ECMAScript?»
Я не эксперт, но не могуПодумайте о любой причине, по которой спецификация языка будет подробно описывать, как его функции должны быть реализованы внутри.Такое ограничение не имело бы абсолютно никакой цели, поскольку оно не влияет на функционирование языка ни в коем случае, кроме производительности.
edit - несмотря на два отрицательных голоса, фактически этоАбсолютно правильно, и фактически независимость от реализации спецификации ECMA-262 специально описана в разделе 8.6.2 спецификации:
"Описания в этих таблицахуказывают их поведение для собственных объектов ECMAScript, если в этом документе не указано иное для определенных типов собственных объектов ECMAScript. Хост-объекты могут поддерживать эти внутренние свойства с любым поведением, зависящим от реализации, если это согласуется с конкретными ограничениями хост-объектауказано в этом документе"
" Хост-объекты могут реализовывать эти внутренние методы любым способом, если не указано иное; "
Слово" хеш "нигде не встречается во всей спецификации ECMA-262.
(илиiginal, продолжение)
Реализации Javascscript, скажем, в Internet Explorer 6.0 и Google Chrome V8 почти не имеют ничего общего, но (более или менее) обе соответствуют одной спецификации.
Если вы хотите узнать, как конкретный интерпретатор javascript что-то делает, вам следует специально изучить этот движок.
Хеш-таблицы - эффективный способ создания перекрестных ссылок.Они не единственный способ.Например, некоторые движки могут оптимизировать хранилище для небольших наборов (для которых издержки хеш-таблицы могут быть менее эффективными).
В конце концов, все, что вам нужно знать, это то, что они работают.Могут быть более быстрые способы создания таблиц поиска больших наборов, используя ajax или даже в памяти.Например, посмотрите интересное обсуждение этого поста из блога Джона Ресейга об использовании структуры данных trie.
Но это ни здесь, ни там.Ваш выбор использования этого или нативных объектов JS не должен зависеть от информации о том, как JS реализует объекты.Это должно быть обусловлено только сравнением производительности: как масштабируется каждый метод.Это информация, которую вы получите, выполняя тесты производительности, а не просто зная кое-что о реализации движка JS.