Ich weiß, dass ein Array in JavaScript nichts anderes als ein Objekt ist. Wenn ich ein Array so definieren:Wie Array-Verhalten zu kopieren?
var array;
array = [ "a", "b", "c" ];
und
Object.keys(array);
Ich erhalte folgende Array laufen: ["0", "1", "2"]
. Die Array-Länge von array
ist 3
.
Wenn ich hinzufügen, eine Eigenschaft wie:
array["a"] = "d";
Object.keys()
ist ["0", "1", "2", "a"]
Rückkehr, aber Arraylänge von array
ist noch 3
.
Aber wenn ich eine Immobilie wie das hinzufügen:
array["3"] = "d";
die Länge array
ist jetzt 4
.
Wenn array
ist nur ein anderes Objekt, wie kann ich diese Art von Verhalten erreichen, wenn ich mein Objekt von Grund auf wie var myArray = {}
starten?
[Lesen Sie diesen klassischen Blog-Post von Kangax] (http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/) - es stellt sich heraus, dass Sie kann nicht tun, was du verlangst. – Pointy
mögliches Duplikat von [Javascript array length incorrect-on-array-of-objects] falsch (http://stackoverflow.com/questions/2528680/javascript-array-length-incorrect-on-array-of-objects) – epascarello