Was ist der wirkliche Unterschied zwischen der Deklaration eines Arrays wie diesem:
var myArray = new Array();
y
var myArray = [];
Was ist der wirkliche Unterschied zwischen der Deklaration eines Arrays wie diesem:
var myArray = new Array();
y
var myArray = [];
Der Unterschied bei der Verwendung von
var arr = new Array(size);
Ou
arr = [];
arr.length = size;
Wie in dieser Frage bereits ausreichend erörtert wurde.
Ich möchte die Frage der Geschwindigkeit hinzufügen - die aktuell schnellsten Weg, auf google chrome
ist die zweite.
Aber Vorsicht, diese Dinge ändern sich mit den Updates häufig. Auch die Laufzeit unterscheidet sich zwischen verschiedenen Browsern.
Zum Beispiel - die 2. Option, die ich erwähnt habe, läuft mit 2 Millionen [Ops/Sekunde] auf chrome
aber wenn Sie es ausprobieren würden mozilla dev.
käme man auf eine überraschend hohe Quote von 23 Millionen.
Wie auch immer, ich schlage vor, dass Sie es ab und zu auf verschiedenen Browsern (und Rechnern) ausprobieren, indem Sie die Website als solche
Ich habe einen Unterschied zwischen den beiden Konstruktionen gefunden, der mich sehr gestört hat.
Sagen wir, ich habe:
function MyClass(){
this.property1=[];
this.property2=new Array();
};
var MyObject1=new MyClass();
var MyObject2=new MyClass();
Im wirklichen Leben, wenn ich das tue:
MyObject1.property1.push('a');
MyObject1.property2.push('b');
MyObject2.property1.push('c');
MyObject2.property2.push('d');
Das Ergebnis ist folgendes:
MyObject1.property1=['a','c']
MyObject1.property2=['b']
MyObject2.property1=['a','c']
MyObject2.property2=['d']
Ich weiß nicht, was laut Sprachspezifikation passieren soll, aber wenn ich möchte, dass meine beiden Objekte eindeutige Eigenschaftsarrays in meinen Objekten haben, muss ich new Array()
.
Dieses JSFiddle zeigt, dass die Ausgabe das ist, was man mit dem Array-Literal erwarten würde []
y new Array()
Konstruktor, was zu einem Element pro Array pro Eigenschaft führt. In Ihrem Code muss etwas anderes vor sich gehen, um das oben gezeigte Ergebnis zu erhalten.
Bucky, das passiert bei mir nicht, in keinem Browser. Um dieses Verhalten zu erhalten, müssten Sie etwas wie dieses tun: var property1static=[];
function MyClass(){ this.property1=property1static; this.property2=new Array(); };
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
2 Stimmen
[]
Token:ARRAY_INIT
;new Array
Spielsteine:NEW, IDENTIFIER
;new Array()
Spielsteine:NEW, IDENTIFIER, CALL