¿Cómo se implementan las matrices de JavaScript?

A saber, cómo funciona el siguiente código:

var sup = new Array(5);
sup[0] = 'z3ero';
sup[1] = 'o3ne';
sup[4] = 'f3our';
document.write(sup.length + "<br />");

salida '5' para la longitud, cuando todo lo que has hecho es establecer varios elementos?

Mi 'problema' con este código es que no entiendo cómolength cambia sin llamar a ungetLength() o unsetLength() método. Cuando hago cualquiera de los siguientes:

a.length
a['length']
a.length = 4
a['length'] = 5

en un objeto sin matriz, se comporta como una matriz dict / asociativa. Cuando hago esto en el objeto de matriz, tiene un significado especial. ¿Qué mecanismo en JavaScript permite que esto suceda? ¿JavaScript tiene algún tipo de sistema de propiedad que se traduce

a.length
a['length']

en métodos "get" y

a.length = 4
a['length'] = 5

en métodos "establecidos"?

Respuestas a la pregunta(8)

Su respuesta a la pregunta