Tendo essa informação em mente para você pegar essas key basta fazê-lo
da mesma forma que se faz com para percorrer qualquer outro objeto
dentro do JavaScript: com *for in*.
var a = {abc: 1, bdf: 2, cdf: 3};
for(k in a) alert(k);
Lembrando que o *in statement* não funciona no IEca 5.0 e inferiores.
E cuidado com os protótipos indesejados nos seus objetos nativos.
var ar = [];
ar['a'] = 1;
ar['b'] = 2;
for (var i in ar) {
alert(i + ', ' + ar[i]);
}
Abraços.
--
Nando Vieira
bloggin' @ http://simplesideias.com.br
money @ http://spesa.com.br
Não é verdade. Você só pode acessar como atributo se declarar como um hash.
Se declarar como um array, deve acessar como array.
var a = [];
var o = {};
a.teste = 'foo'; // erro
o.teste = 'bar'; // vai de boa
Os métodos são outros.
o.push('a'); // erro
Teste você mesmo se [].teste = 123 não funciona.
Funciona beleza. Arrays associativos no JS não existe. Se você fizer:
a.teste = 'foo' aí no seu caso funciona sim.
Ok. Funciona.
Mas existem arrays associativos e objetos em javascript, sim.
Testado no Firebug.
a = [];
b = {};
a.foo = 'bar';
b.foo = 'bar';
a.constructor; // retorna Array()
b.constructor; //retorna Object()
;)
Abraço!
Claro que que ele vai continuar sendo instancia do Array.
O fato de você ter adicionado um propriedade a ele não muda esse fato.
Mas o que você está fazendo aí em cima não é adicionando elementos com
indices associativos e sim adicionando propriedades à instancia do
objeto Array.
É diferente, entendeu?
Ah, não é array associativo. Tem gente que diz que o javascript não
tem array associativo pq falta muitas propriedades que são encontradas
numa lista associativa, mas como tem um zilhão de implementações
diferentes, eu nem concordo muito com essa idéia... Mas Array é só um
objeto extendido =]
alert([] instanceof Object);
alert([] instanceof Array);
Se me lembro bem como o "watch" funciona, dava até pra simular o
comportamento do array com um objeto simples =b
--
Jonas Raoni Soares Silva
http://www.jsfromhell.com