Wiem, że tablica w JavaScript to nic innego jak obiekt. Kiedy zdefiniować tablicę tak:Jak skopiować zachowanie tablicy?
var array;
array = [ "a", "b", "c" ];
i uruchomić
Object.keys(array);
dostaję po tablicy: ["0", "1", "2"]
. Długość tablicy array
to 3
.
Kiedy dodać obiekt jak:
array["a"] = "d";
Object.keys()
wraca ["0", "1", "2", "a"]
, lecz długość tablicy array
wciąż 3
.
Ale kiedy dodać obiekt tak:
array["3"] = "d";
długość array
jest teraz 4
.
Jeśli array
jest tylko kolejnym obiektem, w jaki sposób mogę uzyskać takie zachowanie, gdy uruchamiam obiekt od podstaw, np. var myArray = {}
?
[Przeczytaj ten klasyczny post na blogu od Kangaxa] (http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/) - okazuje się, że nie mogę zrobić tego, o co prosisz. – Pointy
możliwy duplikat [długość tablicy JavaScript niepoprawny w tablicy obiektów] (http://stackoverflow.com/questions/2528680/javascript-array-length-incorrect-on-array-of-objects) – epascarello