reorder - sort object javascript
''Congelando'' Arrays en Javascript? (1)
Sí, la congelación debería funcionar para Arrays, el comportamiento que está experimentando es claramente un error de implementación.
Este error podría estar relacionado con el hecho de que los objetos de la matriz implementan un método interno [[DefineOwnProperty]]
(la magia que hace que la propiedad de length
funcione).
Acabo de probarlo en dos implementaciones y funciona correctamente (Chrome 16.0.888 y Firefox Aurora 8.02a).
Sobre la segunda pregunta, bueno, los objetos de matriz heredan de Array.prototype
que hereda de Object.prototype
, por ejemplo, puede acceder a métodos no sombreados desde Object.prototype
directamente en objetos de matriz:
[''a''].hasOwnProperty(''0''); // true
Pero esto no está relacionado con la forma en que funciona typeof
, este operador devolverá ''object''
para cualquier intención de objeto, independientemente de su tipo, y para el valor null
, del cual la gente siempre se ha quejado.
El resto de los posibles valores de retorno del operador typeof
, corresponden a los tipos primitivos del idioma, Número, Cadena, Booleano, Símbolo y No definido.
Desde las especificaciones de ECMA-262, Javascript ha obtenido el método Object.freeze () , que permite objetos, cuyas propiedades no se pueden cambiar, agregar o eliminar.
var obj = {''a'':1, ''b:2''};
Object.freeze(obj);
Object.isFrozen(obj); // returns true
obj.a = 10; // new assignment has no affect
obj.a; // returns 1
Hasta ahora tan bueno.
Me pregunto si Freeze () también debería funcionar en Arrays.
var arr = [1, 2];
Object.freeze(arr);
Object.isFrozen(arr); // returns true
arr[0] = 10;
arr; // returns [10, 2] ... ouch!
Tal vez me equivoque, pero tenía la impresión de que Array hereda de Object.
typeof obj // "object"
typeof arr // "object"
Cualquier idea, punteros, iluminaciones serían altamente apreciados.