Câu trả lời:
Đầu tiên và thứ ba là tương đương và tạo một mảng mới. Thứ hai tạo một đối tượng trống mới, không phải một mảng.
var myArray = []; //create a new array
var myArray = {}; //creates **a new empty object**
var myArray = new Array(); //create a new array
myObject["someValue"]
hoặc myObject.someValue
. Các đối tượng có sản phẩm nào được tạo ra bởi {}
tất nhiên sẽ không có những đặc tính, nhưng bạn có thể gán cho chúng trong cùng một cách:myObject.someValue = "hello!"
var a = new Array(5)
và var b = [5]
, sau đó a
≠ b
(vì a.length
= 5 trong khi b.length
= 1, a[0]
là undefined
trong khi b[0]
là 5, và vân vân.)
var a;
và var a = {};
giống nhau?
var myObject = {};
tương đương với var myObject = new Object();
Vì vậy, ví dụ thứ hai không phải là một Array
mà là một tướng Object
.
Điều này có thể gây nhầm lẫn khi Array
là một lớp và Object
là một lớp - chính xác hơn Array
là một lớp con của Object
. Vì vậy, nói chung, Object
ngữ nghĩa có thể áp dụng cho Array
:
var o = [];
o.push('element1');
o.push('element2');
o['property1'] = 'property value'; // define a custom property.
console.log(o.property1);
console.log(o.length); // Outputs '2' as we've only push()'ed two elements onto the Array
o['property1'] = 'property value'
, bạn không thực sự thêm một phần tử vào mảng, mà là thiết lập một thuộc tính của đối tượng mảng . Bối rối? Tôi đã nói rồi;) Trong JavaScript, về cơ bản mọi thứ đều là một đối tượng. Các đối tượng khác, như Array
,, RegExp
... mở rộng đối tượng cơ bản với các chức năng khác. Một đối tượng trống rỗng được tạo ra bằng dấu ngoặc nhọn plain_obj = {}
.