Jeśli nie masz zachowania związanego z obiektem (tj. Jeśli obiekt jest tylko kontenerem dla danych / stanu), użyłbym literału obiektu.
var data = {
foo: 42,
bar: 43
};
Zastosuj zasadę KISS . Jeśli nie potrzebujesz niczego poza prostym kontenerem danych, użyj prostego literału.
Jeśli chcesz dodać zachowanie do swojego obiektu, możesz skorzystać z konstruktora i dodać metody do obiektu podczas konstruowania lub dać swojej klasie prototyp.
function MyData(foo, bar) {
this.foo = foo;
this.bar = bar;
this.verify = function () {
return this.foo === this.bar;
};
}
MyData.prototype.verify = function () {
return this.foo === this.bar;
};
Taka klasa działa również jak schemat obiektu danych: masz teraz pewien rodzaj kontraktu (za pośrednictwem konstruktora), jakie właściwości obiekt inicjuje / zawiera. Wolny literał to po prostu amorficzna plama danych.
Równie dobrze możesz mieć funkcję zewnętrzną, verifyktóra działa na zwykłym starym obiekcie danych:
var data = {
foo: 42,
bar: 43
};
function verify(data) {
return data.foo === data.bar;
}
Jednak nie jest to korzystne w odniesieniu do hermetyzacji: w idealnym przypadku wszystkie dane + zachowanie związane z jednostką powinny współistnieć.