Mảng JavaScript so với dấu ngoặc nhọn


111

Sự khác biệt giữa mỗi định nghĩa mảng sau đây là gì.

var myArray = [];
var myArray = {};
var myArray = new Array();

Câu trả lời:


137

Đầ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

Làm thế nào để chúng tôi truy cập các giá trị của đối tượng.
Pinkie

3
Với dấu ngoặc hoặc ký hiệu dấu chấm: 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!"
johusman

4
Trong trường hợp cụ thể này, 1 và 3 có cùng tác dụng. Tuy nhiên, đôi khi họ cư xử khác nhau. Ví dụ, nếu var a = new Array(5)var b = [5], sau đó ab(vì a.length= 5 trong khi b.length= 1, a[0]undefinedtrong khi b[0]là 5, và vân vân.)
Hồ Nam Rostomyan

var a;var a = {};giống nhau?
RNA

31

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 Arraymà là một tướng Object.

Điều này có thể gây nhầm lẫn khi Arraylà một lớp và Objectlà một lớp - chính xác hơn Arraylà một lớp con của Object. Vì vậy, nói chung, Objectngữ 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

2
property1 được lưu trữ ở đâu. Há chẳng phải trong mảng
út

9
@Pinkie: Điều này đang trở nên khó hiểu: Mảng cũng là các đối tượng . Bằng cách này 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 = {}.
Felix Kling
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.