2012-02-12 13 views
9

Ogni volta che lavoro con gli array, ho sempre utilizzare lo stile [], tuttavia, quando voglio creare un array con un importo fisso di elementi che uso new Array(N) (io non conosco altro modo di fare questo)Modo corretto per creare un array con N numero di elementi senza il vecchio 'nuovo array (N)'?

ho pensato che non era un grosso problema, fino a quando ho letto queste parole forti su questo:

chiunque fare questo, l'utilizzo di “new Array()” invece di “[]”, o “nuova Object()” invece di "{}" è necessario reimparare JavaScript.

Voglio davvero evitare di scrivere codice errato. Qualcuno mi dice la giusta direzione da seguire?

+2

In realtà penso che tu stia già bene. Stai usando la sintassi '[]' quando assegni un array la maggior parte del tempo, e 'new Array (n)' quando vuoi una dimensione specifica. Niente di sbagliato lì, la citazione che hai postato non tiene conto di tutte le situazioni. –

+0

@Michael buono a sapersi !, Credo di poter ora dormire con le luci spente :) – mithril333221

+1

Non vedo nulla di sbagliato nell'usare il costruttore 'Array' in questo modo. Esiste per una buona ragione –

risposta

5

Non mi preoccuperei troppo di alcuni commenti casuali su un blog nel 2006. Soprattutto perché il tuo caso d'uso non è solo new Array(). Stai utilizzando il costruttore di casi speciali fornito appositamente per questo scopo.

Inoltre, utilizzare new Array() anziché [] non è la cosa peggiore che qualcuno possa fare con JS.

+1

probabilmente hai ragione, dovrei smettere di dormire in posizione fetale e con le luci accese a causa di un post di 6 anni – mithril333221

+0

Nota che questo non rende necessariamente quella citazione _raccolto_ - solo che dobbiamo essere in grado di riconoscere l'iperbole quando lo vediamo –

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

repeat('*',25) 

// returned value: (String) 
+0

Questa è una cattiva abitudine. In generale, l'omissione della parola chiave 'new' è pericolosa e scorretta. Succede solo che il costruttore 'Array' si comporti bene e corregge il tuo errore richiamando efficacemente il costruttore con la parola chiave' new' internamente. –

+0

Non sono d'accordo sul fatto che sia una cattiva abitudine. Essere inciampato su nuove fabbriche di classe vs alcune volte potrebbe accadere a qualcuno quando si stanno abituando a javascript, ma difficilmente richiede una pratica dogmatica (usa sempre di nuovo! O usa sempre le fabbriche!) Perché potresti assumere una volta ogni tanto la funzione è una fabbrica quando non lo è. È facile da superficie e correggere. Passa a quale sintassi offre la chiarezza più sintattica nell'uso effettivo. 'Point (x, y)' e '$' di JQuery hanno senso come fabbriche, e 'new' forse per qualcosa creato di rado e persistentemente, come' new Sprite (monsters ["dragon"]) ' – Plynx

0

So che questa domanda è piuttosto vecchio, ma ecco come avrei codificarlo come alternativa alla new Array (dimensione), utilizzando la sintassi letterale di JavaScript.

var arr = []; 
arr.length = size; 
Problemi correlati