Erstellen von Neuen Objekten in JavaScript
Ich bin relativ Neuling auf der Objekt-orientierten Programmierung in JavaScript, und ich bin mir nicht sicher die "beste" Möglichkeit zum definieren und verwenden Objekte in JavaScript. Ich habe gesehen, die "kanonischen" Weg, um Objekte zu definieren und instanziieren einer neuen Instanz, wie unten gezeigt.
function myObjectType(property1, propterty2) {
this.property1 = property1,
this.property2 = property2
}
//now create a new instance
var myNewvariable = new myObjectType('value for property1', 'value for property2');
Aber ich habe gesehen, andere Möglichkeiten zum erstellen neuer Instanzen von Objekten, die in dieser Weise:
var anotherVariable = new someObjectType({
property1: "Some value for this named property",
property2: "This is the value for property 2"
});
Ich mag, wie dieser zweite Weg erscheint - der code sich selbst dokumentieren. Aber meine Fragen sind:
-
Welcher Weg der "bessere"?
-
Kann ich verwenden, die zweite Möglichkeit zu
instanziieren eine variable ein Objekt
der Typ, der definiert wurde, mit dem
"klassische"Art der Festlegung der
Objekt-Typ, dass implizite
Konstruktor? -
Wenn ich will erstellen Sie ein array von
diese Objekte, sind es andere
überlegungen?
Vielen Dank im Voraus.
- es war ein guter thread über dieses vor ein paar Tagen. stackoverflow.com/questions/1595611/...
- Per Konvention wird empfohlen, dass der erste Buchstabe von "Objekt" - Funktionen aktiviert werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist wirklich an Geschmack. Auf diese Weise:
... ist in der Regel besser, wenn es mehr als 2/3 Argumente, als es aids Lesbarkeit und macht es einfacher, Sie zu vermeiden das optionale argument problem (
fn(null,null,null,123')
).Ein weiterer Aspekt ist die Leistung. Übergeben von Argumenten in der üblichen Weise, wird schneller sein, aber dieser Geschwindigkeitsvorteil wird nur signifikant bei sehr performance-sensible Situationen.
Nicht leicht. Wenn Sie wollen, instanziieren Konstruktor, indem ein hash statt nur Argumente übergeben, und Sie haben keine Kontrolle über die Quelle, dann könnte man "wrap" es:
Ich würde nicht wirklich empfehlen, messing mit third-party-APIs nur für die Zwecke der Stil obwohl.
Wie groß ist das array? Was ist das array für genau? Leistung überlegung Wert...
Beste Weg zum erstellen von javascript-Objekten beenden mit neuen (zumindest wenn Sie sich auf die crockford-camp)
Seite 52 von Javascript: Die Guten Teile, ich kann es nur empfehlen 🙂
new function(){...}
ist völlig falsch! mit Werk - /generator-Funktionen ist schön und gut, abernew function...
ist sehr falsch.new function(){...}
erstellen ein neues Objekt, abgeleitet aus dem Prototyp der anonymen Funktion, und die Verwendung der anonymen Funktion zu initialisieren. Sie am Ende der Instanziierung ein Objekt, das Sie nicht brauchen. Das ehrlich sieht aus wie ein Schreibfehler auf mich zu. So oder so,obj.testing
wird ein Objekt, keine Funktion, und die Warnung ausgeführt wird, die auf die Bildung, nicht als Methode. Instanziieren einesnew
anonyme Funktion ist Total überflüssig mit nur die Zuweisung eines neuen Objekts ({}
).1) ich würde sagen, Methode #2 ist viel lieber, für mich jedenfalls. Das Beispiel mit den 2-Eigenschaften ist es nicht anders, aber was, wenn Sie wollte, dies zu tun:
Denken Sie, wie viele Kombinationen von überlastungen (oder halten Spur von
null
s) müsstest du haben, um Eigenschaften, die Sie kann oder kann nicht liefern wollen, um das Objekt mit der ersten Methode. Dies ist ein viel mehr erweiterbaren und flexiblen Ansatz.2) Nur die Möglichkeit es mit einem leeren Konstruktor, dies wäre viel übersichtlicher für die Instanziierung.
3) Länge/Lesbarkeit, vor allem mit mehr als ein paar Objekte. Schauen JSON, es ist ziemlich sauber/lesbar ist, wieder zumindest auf mich, wenn Sie möchten, dass Stil, erstellen von arrays von Ihren Objekten sieht sehr ähnlich wie in Methode #2.
Gut, der zweite Weg sieht nett aus und ist nützlich in dem Fall von einer "Klasse", die viele setup-Optionen. Beachten Sie jedoch, dass Sie tatsächlich gebaut ein anderes Objekt in den Prozess.
Ich würde Ihnen raten, Lesen Sie einige code, der von der einen oder anderen Javascript-framework, und finden Sie einen Stil, dass appelle an Sie.