Lưu ý rằng khi bạn sử dụng chỉ mục vị trí (hoặc 0), các giá trị được đặt trong mảng:
var array = [];
array[0] = "Foo";
array[1] = "Bar";
Đây không phải là trường hợp khi bạn thêm các giá trị không phải chỉ mục (không phải 0-9 +):
var array = [];
array[0] = "Foo";
array[1] = "Bar";
array[-1] = "Fizzbuzz";
Giá trị chỉ được đặt trong mảng khi bạn chơi theo luật. Khi bạn không, họ không được chấp nhận. Tuy nhiên, chúng được chấp nhận trên chính đối tượng Array, đó là trường hợp của bất kỳ thứ gì trong JavaScript. Mặc dù ["Foo", "Bar"]
là các giá trị duy nhất trong mảng của chúng tôi, chúng tôi vẫn có thể truy cập "Fizzbuzz"
:
array[-1];
Nhưng lưu ý một lần nữa rằng đây không phải là một phần của các giá trị mảng, vì "chỉ mục" của nó không hợp lệ. Thay vào đó, nó đã được thêm vào mảng như một thành viên khác. Chúng tôi có thể truy cập các thành viên mảng khác theo cùng một kiểu:
array["pop"];
Lưu ý ở đây rằng chúng tôi đang truy cập pop
phương thức trên mảng, phương thức này thông báo cho chúng tôi rằng phương thức này chứa mã gốc. Chúng tôi không truy cập bất kỳ giá trị mảng nào có khóa là "pop", mà là một thành viên trên chính đối tượng mảng. Chúng tôi có thể xác nhận thêm điều này bằng cách đi qua các thành viên công khai của đối tượng:
for (var prop in array)
console.log(prop, array[prop]);
Câu nào giải thích sau đây:
0 Foo
1 Bar
-1 Fizzbuzz
Vì vậy, một lần nữa, đó là trên các đối tượng , nhưng nó không phải trong các mảng .
Câu hỏi tuyệt vời! Khiến tôi chắc chắn phải chụp hai lần.