Không có sự khác biệt lớn giữa các định nghĩa này, ngoại trừ cách đầu tiên sử dụng mảng/đối tượng theo nghĩa đen và thứ hai là hàm tạo mảng/đối tượng.
Trình tạo mảng có thể trả về các kết quả khác nhau, tùy thuộc vào số lượng đối số được truyền vào. Nếu bạn chuyển vào một đối số, một mảng trống mới sẽ được tạo theo độ dài của đối số đó. Ví dụ:
// arr1 is the same as arr2
var arr1 = new Array(1, 2, 3, 4);
var arr2 = [1, 2, 3, 4];
alert(arr1.length == arr2.length); // true
alert(arr1[0]); // 1
alert(arr2[0]); // 1
Nhưng, đi qua trong một kết quả tranh luận khác nhau:
// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number
var arr3 = new Array(200);
var arr4 = [200];
alert(arr3.length == arr4.length); // false
alert(arr3[0]); // 'undefined'
alert(arr4[0]); // 200
Cách nhanh nhất để xác định một mảng hoặc đối tượng của khóa học là cách theo nghĩa đen, bởi vì bạn không cần gọi hàm khởi tạo trước. Dù sao, sự khác biệt tốc độ thực tế là không đáng kể, thực sự.
Tôi đã làm một speed test trong Chrome 6, trong đó tôi định nghĩa 20 lần 10000000 cùng mảng 1, 2, 3
, đó đã cho những kết quả này:
Average speed per 10000000 calls
Array Constructor : 226.55 ms
Array Literal : 159.1 ms
Như bạn có thể thấy, các mảng đen nhanh 67,45ms mỗi 10.000.000 định nghĩa mảng.
Câu hỏi hay! Theo quan điểm của tôi, từ quan điểm làm đẹp mã, 'new Array()' trông sạch sẽ hơn nhiều. Quan tâm để xem những gì đi lên. –
Đề xuất không đề cập đến các đối tượng. –