Obviamente, Object.keys()
é a melhor maneira de obter as chaves de um objeto. Se ele não estiver disponível no seu ambiente, ele pode ser banido trivialmente usando código como no seu exemplo (exceto que você precisa levar em consideração que seu loop iterará sobre todas as propriedades da cadeia de protótipos, diferentemente Object.keys()
do comportamento).
No entanto, seu código de exemplo ...
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [];
for (var key in foo) {
keys.push(key);
}
jsFiddle .
... pode ser modificado. Você pode fazer a atribuição diretamente na parte variável .
var foo = { 'alpha' : 'puffin', 'beta' : 'beagle' };
var keys = [], i = 0;
for (keys[i++] in foo) {}
jsFiddle .
Obviamente, esse comportamento é diferente do que Object.keys()
realmente faz ( jsFiddle ). Você pode simplesmente usar o calço na documentação do MDN .
if(foo.hasOwnProperty(key))
, é o que eu faria. Ou use$.map
.