Wenn Sie kein Verhalten mit einem Objekt verknüpft haben (dh wenn das Objekt nur ein Container für Daten / Status ist), würde ich ein Objektliteral verwenden.
var data = {
foo: 42,
bar: 43
};
Wenden Sie das KISS-Prinzip an . Wenn Sie nichts anderes als einen einfachen Datencontainer benötigen, verwenden Sie ein einfaches Literal.
Wenn Sie Ihrem Objekt Verhalten hinzufügen möchten, können Sie mit einem Konstruktor dem Objekt während der Erstellung Methoden hinzufügen oder Ihrer Klasse einen Prototyp geben.
function MyData(foo, bar) {
this.foo = foo;
this.bar = bar;
this.verify = function () {
return this.foo === this.bar;
};
}
// or:
MyData.prototype.verify = function () {
return this.foo === this.bar;
};
Eine Klasse wie diese verhält sich auch wie ein Schema für Ihr Datenobjekt: Sie haben jetzt eine Art Vertrag (über den Konstruktor), welche Eigenschaften das Objekt initialisiert / enthält. Ein freies Literal ist nur ein amorpher Datenklumpen.
Sie können auch eine externe verifyFunktion haben, die auf ein einfaches altes Datenobjekt wirkt:
var data = {
foo: 42,
bar: 43
};
function verify(data) {
return data.foo === data.bar;
}
Dies ist jedoch im Hinblick auf die Kapselung nicht günstig: Idealerweise sollten alle Daten + Verhaltensweisen, die mit einer Entität verbunden sind, zusammenleben.