Wenn ich zuvor eine Reihe verwandter Variablen speichern musste, habe ich eine Klasse erstellt.
function Item(id, speaker, country) {
this.id = id;
this.speaker = spkr;
this.country = country;
}
var myItems = [
new Item(1, 'john', 'au'),
new Item(2, 'mary', 'us')
];
Aber ich frage mich, ob dies eine gute Praxis ist. Gibt es andere, bessere Möglichkeiten, eine Struktur in Javascript zu simulieren?
javascript
struct
nickf
quelle
quelle
Ich benutze immer Objektliterale
quelle
new READABLE_PART(ignore everything in here)
gewöhnt haben , wird es sehr scannbar und selbstdokumentierend, im Gegensatz zu{read: "ignore", everything: "ignore", in: "ignore", here: "ignore"} // and then come up with READABLE_PART
in Ihrem Kopf. Die erste Version ist lesbar, während Sie schnell blättern. Die zweite, Sie Refactor in Strukturen nur zu verstehen.Das eigentliche Problem ist, dass Strukturen in einer Sprache Werttypen und keine Referenztypen sein sollen. In den vorgeschlagenen Antworten wird vorgeschlagen, anstelle von Strukturen Objekte (Referenztypen) zu verwenden. Dies kann zwar seinen Zweck erfüllen, umgeht jedoch den Punkt, an dem ein Programmierer tatsächlich die Vorteile der Verwendung von Werttypen (wie ein Grundelement) anstelle des Referenztyps haben möchte. Zum einen sollten Werttypen keine Speicherlecks verursachen.
quelle
Ich denke, eine Klasse zu erstellen, um C-ähnliche Strukturen zu simulieren, wie Sie es getan haben, ist das Beste Weg.
Dies ist eine großartige Möglichkeit, verwandte Daten zu gruppieren und die Übergabe von Parametern an Funktionen zu vereinfachen. Ich würde auch argumentieren, dass eine JavaScript-Klasse eher einer C ++ - Struktur als einer C ++ - Klasse ähnelt, wenn man bedenkt, wie viel Aufwand erforderlich ist, um echte objektorientierte Features zu simulieren.
Ich habe festgestellt, dass der Versuch, JavaScript einer anderen Sprache ähnlicher zu machen, schnell kompliziert wird, aber ich unterstütze die Verwendung von JavaScript-Klassen als funktionslose Strukturen voll und ganz.
quelle
Nach Markus ' Antwort können Sie in neueren Versionen von JS (ES6, glaube ich) eine' struct'-Factory einfacher erstellen, indem Sie die Pfeilfunktionen und den Rest-Parameter wie folgt verwenden:
Das Ergebnis dieser Ausführung ist:
Sie können es ähnlich wie Pythons Namedtuple aussehen lassen:
Und die Ergebnisse:
quelle
Ich verwende Objekte im JSON-Stil für dumme Strukturen (keine Mitgliedsfunktionen).
quelle
Ich habe eine kleine Bibliothek erstellt, um struct zu definieren, wenn Sie mit ES6-Kompatibilität arbeiten.
Es ist ein JKT-Parser, den Sie hier im Projekt-Repository auschecken können auschecken können. JKT-Parser
Zum Beispiel können Sie Ihre Struktur so erstellen
quelle
Das Einrichten ist mehr Arbeit, aber wenn die Wartbarkeit die einmalige Anstrengung übertrifft, kann dies Ihr Fall sein.
Vorteile:
quelle