429 Stimmen

Ein leeres Objekt in JavaScript mit {} oder new Object() erstellen?

Es gibt zwei verschiedene Möglichkeiten zur Erstellung eines leeren Objekts in JavaScript:

var objectA = {}
var objectB = new Object()

Gibt es einen Unterschied in der Art und Weise, wie die Skript-Engine sie behandelt? Gibt es einen Grund, das eine dem anderen vorzuziehen?

In ähnlicher Weise ist es auch möglich, ein leeres Array mit einer anderen Syntax zu erstellen:

var arrayA = []
var arrayB = new Array()

8voto

bobince Punkte 512550

Die Objekt- und Array-Literal-Syntax {}/[] wurde in JavaScript 1.2 eingeführt und ist daher in Versionen von Netscape Navigator vor 4.0 nicht verfügbar (und führt zu einem Syntaxfehler).

Meine Finger sagen immer noch standardmäßig new Array(), aber ich bin ein sehr alter Mann. Zum Glück ist Netscape 3 kein Browser, den viele Leute heute jemals in Betracht ziehen müssen...

8voto

Thedric Walker Punkte 1797

Ich glaube {} wurde in einem der Javascript-Videos auf aquí als eine gute Kodierungskonvention. new ist für die pseudoklassische Vererbung notwendig. die var obj = {}; hilft, Sie daran zu erinnern, dass es sich nicht um eine klassische objektorientierte Sprache handelt, sondern um eine prototypische Sprache. Das einzige Mal, das Sie wirklich brauchen würden new ist, wenn Sie Konstrukteursfunktionen verwenden. Zum Beispiel:

var Mammal = function (name) {
  this.name = name;
};

Mammal.prototype.get_name = function () {
  return this.name;
}

Mammal.prototype.says = function() {
  return this.saying || '';
}

Dann wird er wie folgt verwendet:

var aMammal = new Mammal('Me warm-blooded');
var name = aMammal.get_name();

Ein weiterer Vorteil der Verwendung von {} im Gegensatz zu new Object ist, dass Sie damit Objektliterale im JSON-Stil erstellen können.

4voto

Amit Singh Punkte 189
Var Obj = {};

Dies ist die am häufigsten verwendete und einfachste Methode.

Verwendung von

var Obj = new Obj() 

wird nicht bevorzugt.

Es besteht keine Notwendigkeit, die new Object() .

Der Einfachheit, Lesbarkeit und Ausführungsgeschwindigkeit halber sollten Sie die erste Methode (die Objektliteralmethode) verwenden.

2voto

Tomalak Punkte 320467

Das ist im Wesentlichen dasselbe. Verwenden Sie das, was Sie für bequemer halten.

2voto

Alireza Punkte 92209

OK Es gibt einfach 2 verschiedene Wege, die gleiche Sache zu tun! Die eine heißt object literal und die andere ist eine Funktion constructor !

Aber lesen Sie weiter, es gibt ein paar Dinge, die ich Ihnen gerne mitteilen möchte:

Verwendung von {} macht Ihren Code besser lesbar, während das Erstellen von Instanzen von Object oder andere eingebaute Funktionen nicht empfohlen...

Außerdem erhält die Objektfunktion Parameter, da sie eine Funktion ist, wie Object(params) ... aber {} ist der reine Weg, ein Objekt in JavaScript zu starten...

Durch die Verwendung von Objektliteralen sieht Ihr Code viel sauberer aus und ist für andere Entwickler leichter zu lesen, und es entspricht den Best Practices in JavaScript...

Während Objekt in Javascript kann fast alles sein, {} zeigt nur auf Javascript-Objekte, für den Test, wie es funktioniert, tun unten in Ihrem Javascript-Code oder Konsole:

var n = new Object(1); //Number {[[PrimitiveValue]]: 1}

Überraschenderweise entsteht dadurch eine Nummer!

var a = new Object([1,2,3]); //[1, 2, 3]

Und das ist die Schaffung eines Arrays!

var s = new Object('alireza'); //String {0: "a", 1: "l", 2: "i", 3: "r", 4: "e", 5: "z", 6: "a", length: 7, [[PrimitiveValue]]: "alireza"}

und dieses merkwürdige Ergebnis für String !

Wenn Sie also ein Objekt erstellen, ist es empfehlenswert, ein Objektliteral zu verwenden, um einen Standardcode zu haben und einen Code-Unfall wie oben zu vermeiden, auch aus Leistungsgründen, indem Sie {} ist meiner Erfahrung nach besser!

CodeJaeger.com

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.

Powered by:

X