2012-02-12 22 views
9

Cada vez que trabajo con matrices, yo siempre uso el estilo [], sin embargo, cuando quiero crear una matriz con una cantidad fija de elementos que utilizo new Array(N) (no sé de ninguna otra manera de hacer esto)¿Forma correcta de crear una matriz con N número de elementos sin la antigua 'Nueva matriz (N)'?

pensé que no era gran cosa, hasta que leí estas fuertes palabras sobre este:

cualquiera que haga esto, el uso de “new array()” en lugar de “[]”, o “nueva Object()” en lugar de "{}" necesita volver a aprender JavaScript.

Realmente quiero evitar escribir código incorrecto. ¿Alguien me dice la dirección correcta para ir?

+2

De hecho creo que ya estás bien. Está utilizando la sintaxis '[]' cuando asigna una matriz la mayor parte del tiempo, y 'nueva matriz (n)' cuando desea un tamaño específico. No hay nada incorrecto allí, la cita que publica no tiene en cuenta todas las situaciones. –

+0

@Michael es bueno saberlo, supongo que ahora puedo dormir con las luces apagadas :) – mithril333221

+1

No veo nada de malo con el uso del constructor 'Array' de esta manera. Existe por una buena razón. –

Respuesta

5

No me preocuparía demasiado acerca de algún comentario al azar en un blog en 2006. Especialmente porque su caso de uso no es solo new Array(). Está utilizando el constructor de casos especiales que se proporciona específicamente para este propósito.

Además, usar new Array() en lugar de [] no es lo peor que alguien puede hacer con JS.

+1

probablemente tengas razón, debería dejar de dormir en posición fetal y con las luces encendidas debido a una publicación de 6 años – mithril333221

+0

Ten en cuenta que esto no hace que esa cita sea necesariamente incorrecta, sino que necesitamos poder reconocer la hipérbole cuando lo vemos –

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

repeat('*',25) 

// returned value: (String) 
+0

Esto es un mal hábito. En general, omitir la palabra clave 'new' es peligroso e incorrecto. Simplemente ocurre que el constructor 'Array' se comporta bien y corrige su error volviendo a llamar al constructor con la palabra clave' new' internamente. –

+0

No estoy de acuerdo con que sea un mal hábito. Algunas veces, tropezar con nuevas fábricas de clase puede sucederle a alguien cuando se está acostumbrando a javascript, pero apenas exige una práctica dogmática (¡siempre use fábricas nuevas o siempre use!) Porque de vez en cuando puede asumir una la función es una fábrica cuando no lo es. Eso es fácil de ver y corregir. Pase por lo que la sintaxis ofrece la mayor claridad sintáctica en el uso real. 'Point (x, y)' y JQuery '$' tienen sentido como fábricas, y 'new' quizás para cualquier cosa creada con poca frecuencia y persistencia, como' new Sprite (monsters ["dragon"]) ' – Plynx

0

Sé que esta pregunta es bastante antigua, pero así es como la codificaría como una alternativa al nuevo Array (tamaño), utilizando la sintaxis literal de JavaScript.

var arr = []; 
arr.length = size; 
Cuestiones relacionadas