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.
Gute Frage! Meiner Meinung nach, vom Standpunkt der Code Schönheit, sieht 'new Array()' viel sauberer aus. Interessiert zu sehen, was aufkommt. –
Der vorgeschlagene Betrogene erwähnt keine Objekte. –