Tworzenie obiektów podobnych do tablicy w JavaScript
W JavaScript istnieją obiekty, które udają tablice (lub są „podobne do tablicy”). Takie obiekty sąarguments
, NodeList
s (zwrócone zgetElementsByClassName
itp.) oraz obiekty jQuery.
Gdyconsole.log
ged, pojawiają się jako tablice, ale tak nie jest. Wiem, że aby być podobnym do tablicy, obiekt musi miećlength
własność.
Zrobiłem więc „obiekt” w ten sposób:
function foo(){
this.length = 1;
this[0] = "bar";
}
var test = new foo;
Kiedy jaconsole log(test)
, Dostaję (zgodnie z oczekiwaniami) afoo
obiekt. Mogę go „przekonwertować” na tablicę za pomocą
Array.prototype.slice.call(test)
Ale nie chcę go konwertować, chcę, żeby był podobny do tablicy. Jak zrobić obiekt przypominający tablicę, a więc kiedy jestconsole.log
ged, pojawia się jako tablica?
Próbowałem ustawieniafoo.prototype = Array.prototype
, aleconsole.log(new foo)
nadal pokazuje afoo
obiekt, a nie tablica.