2012-02-12 12 views
9

Ilekroć pracy z tablicami, zawsze używam styl [] jednak, gdy chcę utworzyć tablicę ze stałą ilością elementów używam new Array(N) (nie znam innego sposobu robienia tego)Poprawny sposób utworzenia tablicy z liczbą N elementów bez starej "nowej tablicy (N)"?

Myślałem, że to nie było nic wielkiego, dopóki nie przeczytałem te mocne słowa o tym:

Każdy robi to, używając „new Array()” zamiast „[]” lub „nową Object()” zamiast "{}" musi ponownie wczytać JavaScript.

Naprawdę chcę uniknąć pisania złego kodu. Czy ktokolwiek ma mi do powiedzenia właściwy kierunek?

+2

Myślę, że już wszystko w porządku. Używasz składni '[]', gdy przydzielasz tablicę przez większość czasu i 'new Array (n)' kiedy chcesz określonego rozmiaru. Nic złego, cytowany przez ciebie cytat nie uwzględnia wszystkich sytuacji. –

+0

@Michael dobrze wiedzieć !, myślę, że mogę teraz spać przy wyłączonych światłach :) – mithril333221

+1

Nie widzę nic złego w korzystaniu z konstruktora 'Array' w ten sposób. Istnieje z dobrego powodu. –

Odpowiedz

5

Nie martwiłbym się zbytnio o niektóre losowe komentarze na blogu w 2006 roku. Zwłaszcza, że ​​twój przypadek użycia nie jest tylko new Array(). Używasz konstruktora specjalnego, który jest specjalnie do tego przeznaczony.

Poza tym używanie new Array() zamiast [] nie jest najgorszą rzeczą, którą ktoś może zrobić z JS.

+1

prawdopodobnie masz rację, powinienem przestać spać w pozycji płodowej iz włączonymi światłami z powodu 6-letniego posta – mithril333221

+0

Pamiętaj, że to nie czyni tego cytatu koniecznie _niemnie - tylko to, że musimy być w stanie rozpoznać hiperbolę kiedy to widzimy. –

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

repeat('*',25) 

// returned value: (String) 
+0

To jest zły nawyk. Ogólnie mówiąc, pominięcie słowa kluczowego "new" jest niebezpieczne i niepoprawne. Zdarza się, że konstruktor 'Array' zachowuje się ładnie i poprawia twój błąd przez skuteczne ponowne wywołanie konstruktora wewnętrznie za pomocą słowa kluczowego' new'. –

+0

Nie zgadzam się, że to zły nawyk. Kiedy ktoś przyzwyczaja się do javascriptu, kilka razy może się zdarzyć, że ktoś wpadnie na nowe fabryki klas, ale nie wymaga praktyki dogmatycznej (zawsze używaj nowych lub zawsze używaj fabryk!), Ponieważ możesz od czasu do czasu założyć funkcja jest fabryczna, kiedy jej nie ma. Łatwo to wynurzyć i poprawić. Przejdź przez składnię, która zapewnia najbardziej syntetyczną klarowność w rzeczywistym użyciu. 'Point (x, y)' i JQuery '$' mają sens jako fabryki, a 'new' może oznaczać wszystko, co powstaje rzadko i uporczywie, np.' Nowy Sprite (potwory ["smok"]) ' – Plynx

0

Wiem, że to pytanie jest dość stare, ale oto jak mogę zakodować go jako alternatywę dla nowego Array (rozmiar), używając dosłownej składni JavaScript.

var arr = []; 
arr.length = size; 
Powiązane problemy