Si vous n'avez pas de comportement associé à un objet (c'est-à-dire si l'objet n'est qu'un conteneur de données / état), j'utiliserais un littéral d'objet.
var data = {
foo: 42,
bar: 43
};
Appliquez le principe KISS . Si vous n'avez besoin de rien d'autre qu'un simple conteneur de données, optez pour un simple littéral.
Si vous souhaitez ajouter un comportement à votre objet, vous pouvez utiliser un constructeur et ajouter des méthodes à l'objet pendant la construction ou donner à votre classe un prototype.
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;
};
Une classe comme celle-ci agit également comme un schéma pour votre objet de données: vous avez maintenant une sorte de contrat (via le constructeur) quelles propriétés l'objet initialise / contient. Un littéral gratuit est juste une goutte amorphe de données.
Vous pourriez aussi bien avoir une verifyfonction externe qui agit sur un ancien objet de données:
var data = {
foo: 42,
bar: 43
};
function verify(data) {
return data.foo === data.bar;
}
Cependant, cela n'est pas favorable en ce qui concerne l'encapsulation: idéalement, toutes les données + comportement associé à une entité devraient cohabiter.