Se non hai un comportamento associato a un oggetto (cioè se l'oggetto è solo un contenitore per dati / stato), userei un oggetto letterale.
var data = {
foo: 42,
bar: 43
};
Applica il principio KISS . Se non hai bisogno di nient'altro che un semplice contenitore di dati, vai con un semplice letterale.
Se vuoi aggiungere un comportamento al tuo oggetto, puoi andare con un costruttore e aggiungere metodi all'oggetto durante la costruzione o dare alla tua classe un prototipo.
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;
};
Una classe come questa agisce anche come uno schema per il tuo oggetto dati: ora hai una sorta di contratto (tramite il costruttore) sulle proprietà che l'oggetto inizializza / contiene. Un letterale libero è solo un ammasso di dati amorfo.
Potresti anche avere una verifyfunzione esterna che agisce su un semplice vecchio oggetto dati:
var data = {
foo: 42,
bar: 43
};
function verify(data) {
return data.foo === data.bar;
}
Tuttavia, questo non è favorevole per quanto riguarda l'incapsulamento: idealmente, tutti i dati + il comportamento associati a un'entità dovrebbero convivere.