Bueno, hablando de core objetos de Javascript, el arguments
es un buen ejemplo para hablar.
En este caso, ha sido un objeto similar a una matriz desde el principio, apareció en la Especificación ECMAScript 1ª Edición ya como un objeto simple.
¿Por qué? Creo que en ese momento solo había cuatro métodos integrados Array
, y tal vez el diseñador no creía que esto supusiera demasiado, más tarde se propuso el cambio, pero Microsoft (parte del comité TC39) no aprobó el cambio, el miedo a rompiendo la web siempre ha estado presente.
Ahora va a objetos anfitrión, el DOM, NodeLists
vienen a la mente, creo que no querían utilizar el tipo nativo Array
debido al comportamiento dinámico de estos objetos.
NodeLists
generalmente son vivo objetos, su estructura se refleja ningún cambio en la estructura del DOM subyacente ...
Personalmente me gusta matriz de objetos, porque son muy ligeros, antes de ECMAScript 5, hubo una gran cantidad de restricciones en los métodos centrales, con respecto al uso de objetos parecidos a un array definidos por el usuario.
Por ejemplo, el método de objetos de función apply
, en ECMAScript < = 3, sólo se permite ya sea una matriz real o un argumentos objeto como su segundo argumento, ahora en ES5, la siguiente es posible:
var arrayLike = {0: 'hello ', 1:'world', length:2};
(function (a,b) { alert(a+b); }).apply(null, arrayLike);
Consulte también:
Posiblemente una pregunta relacionada: http://stackoverflow.com/questions/ 1971389/array-like-object-in-javascript –
Por ejemplo: 'arguments' está diseñado para ser inmutable. Ese no sería el caso si fuera una matriz. – jwueller
@elusive, el objeto 'arguments' es mutable, puede cambiar el valor de sus propiedades. Las propiedades con nombre de índice están * vinculadas * a FormalParameters de la función, si cambia el valor de 'arguments [0]', el cambio se reflejará en el primer parámetro nombrado de la función. El modo estricto en ECMAScript 5 introduce algunas restricciones, pero el objeto aún se puede modificar. – CMS