Criando objetos do tipo array em JavaScript
Em JavaScript, existem objetos que fingem ser matrizes (ou são "tipo array"). Tais objetos sãoarguments
, NodeList
s (retornado degetElementsByClassName
, etc.) e objetos jQuery.
Quandoconsole.log
Eles aparecem como matrizes, mas não são. Eu sei que, a fim de ser array-like, um objeto deve ter umlength
propriedade.
Então eu fiz um "objeto" assim:
function foo(){
this.length = 1;
this[0] = "bar";
}
var test = new foo;
Quando euconsole log(test)
, Eu recebo (como esperado) umfoo
objeto. Eu posso "convertê-lo" para um array usando
Array.prototype.slice.call(test)
Mas eu não quero convertê-lo, quero que ele seja parecido com um array. Como eu faço um objeto tipo array, de modo que quando éconsole.log
ged, aparece como um array?
Eu tentei definirfoo.prototype = Array.prototype
, masconsole.log(new foo)
ainda mostra umfoo
objeto, e não uma matriz.