"Supongo que la mayoría del navegador lo implementa de la misma manera, si no ¿por qué no? ¿Existe algún requisito sobre cómo implementarlo en las especificaciones de ECMAScript?"
No soy un experto, pero no puedo pensar en ninguna razón por la cual una especificación de idioma detallaría exactamente cómo deben implementarse internamente sus características. Dicha restricción no tendría absolutamente ningún propósito, ya que no afecta el funcionamiento del idioma de ninguna otra manera que no sea el rendimiento.
edición - a pesar de los dos downvotes, de hecho, esto es absolutamente correcto, y de hecho es la puesta en práctica de la independencia de la especificación ECMA-262 se desscribed específicamente en section 8.6.2 de la especificación:
" Las descripciones en estas tablas indican su comportamiento para objetos nativos ECMAScript, a menos que se indique lo contrario en este documento para tipos particulares de objetos nativos ECMAScript. Los objetos host pueden admitir estas propiedades internas con cualquier comportamiento dependiente de la implementación siempre que sea coherente con el restricciones específicas del objeto host indicadas en este documento "
"Los objetos host pueden implementar estos métodos internos de cualquier manera a menos que se especifique lo contrario;"
La palabra "hash" no aparece en ninguna parte de la especificación ECMA-262 completa.
(original, continuación)
Las implementaciones de Javascscript en, por ejemplo, Internet Explorer 6.0 y V8 de Google Chrome no tienen casi nada en común, pero (más o menos) tanto cumplir con las mismas especificaciones.
Si desea saber cómo un intérprete de JavaScript específico hace algo, debe investigar ese motor específicamente.
Las tablas hash son una forma eficiente de crear referencias cruzadas. Ellos no son la única manera. Algunos motores pueden optimizar el almacenamiento para juegos pequeños (por ejemplo, la sobrecarga de una tabla hash puede ser menos eficiente).
Al final del día, todo lo que necesita saber es que funcionan. Puede haber formas más rápidas de crear tablas de búsqueda de conjuntos grandes, utilizando ajax, o incluso en memoria. Por ejemplo, vea la discusión interesante en this post from John Reseig's blog sobre el uso de una estructura de datos trie.
Pero eso no es ni aquí ni allá.Su elección de si usar esto o los objetos JS nativos no debería estar impulsado por la información sobre cómo JS implementa los objetos. Debe ser impulsado solo por la comparación de rendimiento: cómo escalar cada método. Esta es información que obtendrás al hacer pruebas de rendimiento, no solo por saber algo sobre la implementación del motor JS.
Bueno, lo que es un “HashMap” en su opinión? – Gumbo
Creo que se está refiriendo a un 'java.util.HashMap' que no es lo mismo en absoluto. –
Javascript no es java, y no está implementado en java. – Victor