¿Qué esperabas ver? :) No estoy seguro de lo que estás tratando de hacer.
x
es una matriz y todo lo que hizo cuando hizo x.name
, simplemente configuró una propiedad llamada name
para el objeto de matriz. La propiedad name
en sí misma no se agrega a la matriz. Esto se puede ver en Firebug:
El objeto de matriz tiene una propiedad llamada name
, pero el valor de esa propiedad no se añade a la propia matriz.
Lo que se quiere hacer es algo como esto:
var x = {
array: [1, 2, 3, 4],
name: "myArray"
};
Ahora usted tiene un objeto llamado x
que tiene dos propiedades. La propiedad array
se refiere a una matriz y la propiedad name
hace referencia al nombre. x.array
le dará la matriz, y x.name
le dará el nombre.
EDITAR
Esto es en respuesta a sus comentarios. Si bien es cierto que las matrices se pueden enriquecer con propiedades, piense en lo que significa cuando tiene que serializar ese objeto. ¿Qué es exactamente lo que quieres ver cuando serializas x
? Si x
ya es la matriz [1, 2, 3, 4]
, ¿cómo la representaría en JSON? Podría representarlo como:
{ 0: 1,
1: 2,
2: 3,
3: 4,
name: "myArray"
};
Pero lo que tiene ahora ya no es una matriz. Además, el objeto de matriz en sí tiene un montón de propiedades nativas. ¿Cómo debería manejar un serializador JSON?
Creo que está mezclando una matriz como un objeto y una matriz como un literal. Una matriz como literal es solo [1, 2, 3, 4]
. Ahora internamente, la matriz como objeto presumiblemente tiene alguna propiedad que apunta al valor real de la matriz. También tiene otras propiedades (como length
) y métodos que actúan en consecuencia (como slice
).
El serializador JSON está preocupado con el valor del objeto. Si x
es una matriz, entonces la cosa que se debe serializar es el valor de x
, que es [1, 2, 3, 4]
. Las propiedades de x
son completamente diferentes.
Si desea serializar estas propiedades adicionales, entonces deberá escribir su propio serializador que iterará sobre las propiedades de la matriz y representará todo en una matriz de mapa/asociativa. Esta es la única manera; la advertencia, como mencioné antes, es que ya no tienes una matriz real.
¿Qué ** estás ** tratando de hacer? – Neal
No puede agregar ninguna propiedad a una matriz. Las matrices son mapas de índices numéricos a valores. Técnicamente hablando, en Javascript puedes agregar cualquier propiedad a un objeto 'Array' porque están construidos encima del tipo' Object', aunque en realidad no se debe. ¿Cual es tu intencion? –
¿Por qué sobrecargar la matriz? simplemente haz 'var x = {}; x.array = [1,2,3,4]; x.name = "myArray"; 'o haga que sea JSON para comenzar:' var x = {"name": "myArray", "array": [1,2,3,4]} ' – mplungjan