Si no tiene un comportamiento asociado con un objeto (es decir, si el objeto es solo un contenedor de datos / estado), usaría un objeto literal.
var data = {
foo: 42,
bar: 43
};
Aplica el principio KISS . Si no necesita nada más que un simple contenedor de datos, elija un literal simple.
Si desea agregar comportamiento a su objeto, puede ir con un constructor y agregar métodos al objeto durante la construcción o darle a su clase 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 clase como esta también actúa como un esquema para su objeto de datos: ahora tiene algún tipo de contrato (a través del constructor) sobre las propiedades que el objeto inicializa / contiene. Un literal gratuito es solo una masa amorfa de datos.
También podría tener una verifyfunción externa que actúe sobre un objeto de datos antiguo simple:
var data = {
foo: 42,
bar: 43
};
function verify(data) {
return data.foo === data.bar;
}
Sin embargo, esto no es favorable con respecto a la encapsulación: idealmente, todos los datos + comportamiento asociados con una entidad deberían convivir.