recorrer objetos objeto lista herencia ejemplos crear array agregar javascript data-structures time-complexity complexity-theory

objetos - ¿Hay algo que garantice el tiempo constante para acceder a una propiedad de un objeto en JavaScript?



prototype javascript ejemplos (1)

¿Hay algo en JavaScript que garantice que los valores se busquen en el tiempo O (1)?

No. JavaScript no ofrece ninguna garantía de complejidad, a excepción de las colecciones ES6 .

Sé que el operador de acceso [] le da a un programador experimentado la impresión de que está tratando con una estructura de búsqueda O (1)

Sí, es una expectativa razonable. Los motores emplean todo tipo de optimizaciones, desde clases ocultas sobre hashmaps hasta matrices dinámicas, para cumplir con estos supuestos.

Por supuesto, nunca olvide que los objetos JS son bestias complejas, y el acceso a una propiedad simple podría desencadenar una trampa de captación que a su vez podría hacer cualquier cosa.

¿No puede ser posible que un motor JavaScript implemente Object de una manera tal que las propiedades no se busquen en O (1)?

Si, eso es posible.

Esto se refiere a un debate que tuve con un entrevistador cuando estaba entrevistando en Amazon.

Vamos a crear un objeto:

var Obj = {}; Obj[''SomeProperty''] = function ( ) { console.log("Accessed some property"); }; Obj[69] = true;

¿Hay algo en JavaScript que garantice que cuando Obj[''SomeProperty''] posteriormente a esas 2 propiedades como Obj[''SomeProperty''] y Obj[69] los valores respectivos function ( ) { console.log("Accessed some property"); }; function ( ) { console.log("Accessed some property"); }; y 69 se buscan en O (1) tiempo? Sé que el operador de acceso [] le da a un programador experimentado la impresión de que está tratando con una estructura de búsqueda O (1), pero no puede ser posible que un motor JavaScript implemente Object de una manera tal que las propiedades no se busquen en O (1)?