Tôi biết rằng một mảng trong JavaScript không là gì khác ngoài một đối tượng. Khi tôi xác định một mảng như thế:Làm thế nào để sao chép hành vi mảng?
var array;
array = [ "a", "b", "c" ];
và chạy
Object.keys(array);
tôi nhận được sau mảng: ["0", "1", "2"]
. Độ dài mảng là array
là 3
.
Khi tôi thêm một tài sản như:
array["a"] = "d";
Object.keys()
đang trở lại ["0", "1", "2", "a"]
, nhưng mảng chiều dài của array
vẫn là 3
.
Nhưng khi tôi thêm một tài sản như thế:
array["3"] = "d";
chiều dài của array
tại là 4
.
Nếu array
chỉ là một đối tượng khác, làm cách nào tôi có thể đạt được loại hành vi đó khi tôi khởi động đối tượng của mình từ đầu như var myArray = {}
?
[Đọc bài đăng blog cổ điển này từ Kangax] (http://perfectionkills.com/how-ecmascript-5-still-does-not-allow-to-subclass-an-array/) - hóa ra bạn không thể làm những gì bạn đang yêu cầu. – Pointy
bản sao có thể có của [Độ dài mảng Javascript không chính xác trên mảng đối tượng] (http://stackoverflow.com/questions/2528680/javascript-array-length-incorrect-on-array-of-objects) – epascarello