2012-02-12 78 views
9

Bất cứ khi nào tôi làm việc với mảng, tôi luôn luôn sử dụng [] phong cách, tuy nhiên, khi tôi muốn tạo ra một mảng với một số tiền cố định của các yếu tố tôi sử dụng new Array(N) (Tôi không biết bất kỳ cách nào khác để làm điều này)Cách chính xác để tạo một mảng với N số phần tử không có 'mảng mới' (N) 'cũ?

tôi nghĩ đó không phải là vấn đề lớn, cho đến khi tôi đọc những lời mạnh mẽ về vấn đề này:

Bất cứ ai làm điều này, sử dụng “mảng mới()” thay vì “[]”, hoặc “ new Object()” thay vì “{}” cần phải học lại JavaScript.

Tôi thực sự muốn tránh viết mã xấu. Bất cứ ai tâm trí cho tôi biết đúng hướng để đi?

+2

Tôi thực sự nghĩ bạn đã ổn. Bạn đang sử dụng cú pháp '[]' khi bạn phân bổ một mảng hầu hết thời gian, và 'new Array (n)' khi bạn muốn một kích thước cụ thể. Không có gì sai, báo giá bạn đăng không tính đến tất cả các tình huống. –

+0

@Michael tốt để biết !, Tôi đoán bây giờ tôi có thể ngủ với đèn tắt :) – mithril333221

+1

Tôi thấy không có gì sai khi sử dụng hàm tạo 'Array' theo cách này. Nó tồn tại vì một lý do chính đáng. –

Trả lời

5

Tôi sẽ không lo lắng quá nhiều về một số nhận xét ngẫu nhiên trên blog vào năm 2006. Đặc biệt vì trường hợp sử dụng của bạn không chỉ là new Array(). Bạn đang sử dụng hàm tạo đặc biệt được cung cấp riêng cho mục đích này.

Ngoài ra, việc sử dụng new Array() thay vì [] khó là điều tồi tệ nhất mà một người có thể làm với JS.

+1

bạn có thể đúng, tôi nên ngừng ngủ ở vị trí của thai nhi và với đèn bật vì bài đăng 6 tuổi – mithril333221

+0

Lưu ý rằng điều này không làm cho câu nói đó nhất thiết phải _wrong_ - chỉ cần chúng tôi cần có thể nhận ra cường điệu khi chúng ta nhìn thấy nó. –

1
function repeat(str, len){ 
    str= str || ''; 
    len= len || 1; 
    return Array(len+1).join(str); 
} 

repeat('*',25) 

// returned value: (String) 
+0

Đây là một thói quen xấu. Nói chung, bỏ qua từ khóa 'mới' là nguy hiểm và không chính xác. Nó chỉ xảy ra khi hàm tạo 'Array' hoạt động độc đáo và sửa lỗi của bạn bằng cách gọi lại hàm tạo một cách hiệu quả với từ khóa' new' trong nội bộ. –

+0

Tôi không đồng ý rằng đó là một thói quen xấu. Bắt gặp các nhà máy mới so với các nhà máy lớp một vài lần có thể xảy ra với ai đó khi họ quen với javascript, nhưng nó hầu như không đòi hỏi một thực hành giáo điều (luôn luôn sử dụng mới! Hoặc luôn sử dụng các nhà máy!) Bởi vì bạn có thể chức năng là một nhà máy khi nó không phải là. Đó là dễ dàng để bề mặt và chính xác. Đi theo cú pháp nào cung cấp sự rõ ràng nhất về cú pháp trong việc sử dụng thực tế. 'Point (x, y)' và '$' của JQuery có nghĩa là các nhà máy, và 'new' có thể cho bất cứ thứ gì được tạo ra không thường xuyên và liên tục, như' new Sprite (monsters ["dragon"]) ' – Plynx

0

Tôi biết câu hỏi này là khá cũ, nhưng đây là cách tôi sẽ mã nó như là một thay thế cho mảng mới (kích thước), sử dụng cú pháp chữ của JavaScript.

var arr = []; 
arr.length = size; 
Các vấn đề liên quan