2010-08-02 4 views
6

Ist es besserIst es besser zu schreiben: var arr = []; als var arr = neues Array();

var arr=[]; then var arr=new Array(); 
var obj={}; then var obj=new Object(); 

und wenn ja, zu schreiben, warum?

Ich lese slide lection page 36 über diese Idee, aber keine Erklärung gegeben oder Beispiel, warum es besser ist.

+1

Gute Frage! Meiner Meinung nach, vom Standpunkt der Code Schönheit, sieht 'new Array()' viel sauberer aus. Interessiert zu sehen, was aufkommt. –

+0

Der vorgeschlagene Betrogene erwähnt keine Objekte. –

Antwort

6

Es gibt keinen großen Unterschied zwischen diesen Definitionen, außer dass der erste Weg das Array/Objekt-Literal und der zweite den Array/Objekt-Konstruktor verwendet.

Der Array-Konstruktor kann abhängig von der Anzahl der übergebenen Argumente unterschiedliche Ergebnisse liefern. Wenn Sie ein Argument übergeben, wird ein neues leeres Array mit der Länge dieses Arguments erstellt. Zum Beispiel:

// 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 

Aber vorbei in einem Argumente Ergebnisse anders:

// 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 

Der schnellste Weg, um einen Array oder ein Objekt ist natürlich die wörtliche Art und Weise zu definieren, weil Sie nicht tun muss zuerst den Konstruktor aufrufen. Wie auch immer, der tatsächliche Geschwindigkeitsunterschied ist wirklich vernachlässigbar.

habe ich eine speed test in Chrome 6, in dem ich 20 mal 10 Millionen das gleiche Array 1, 2, 3 definiert, die diese Ergebnisse haben:

Average speed per 10000000 calls 
Array Constructor : 226.55 ms 
Array Literal  : 159.1 ms 

Wie Sie sehen können, wörtliche das Array 67,45ms schneller pro 10000000 Array-Definitionen.

+0

die Frage auch hier, was schneller für Computer – Yosef

+0

ausführen, während es ein interessanter Punkt ist, dass der 'Array' Konstruktor die Argumente unterschiedlich behandelt, basierend auf wie viele es gibt, denke ich, es ist völlig irreführend, das als Unterschied in einem aufzulisten Vergleich zwischen den beiden Möglichkeiten, ein Array zu erstellen. '[]' ist keine Methode, die Sie mit Argumenten aufrufen, mehr als 'var a =" test "' sind vier Argumente, die an eine '' '' - Funktion übergeben werden. Es ist nichts anderes als eine Syntax zum Erstellen von Arrays, die sich nur implizit mit der Zuweisung von Dimensionen beschäftigt. –

+3

http://jsperf.com/literal-vs-constructor-array – James

1

thomas fuchs sagt in seinem slideshow, unter diesem video (der teil sprich: "umarme die sprache" auf seite 20): var arr = [] und var obj = {} ist besser und etwas schneller. Ich bin mir nicht sicher, warum, aber wie auch immer, es ist eine sehr interessante Diashow :)

1

Aus einer typischen Programmiererperspektive scheint es, dass Sie dazu neigen, var arr = new Array(); um das Gefühl der typischen Objekt-Instanziierung zu geben. Aber in Javascript ist es in der Regel gute Praxis, var arr = []; Persönlich sehe ich nicht viel Unterschied in der Verwendung beider Möglichkeiten außer für einen Parameter, der von Harmen erklärt wird.

prüfen Link zu - http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/

Verwandte Themen