Как правильно настроить пространство имен JavaScript и классы?
Кажется, есть много способов настроить приложение JavaScript, поэтому не понятно, какой из них правильный или лучший. Есть ли разница в методах ниже или лучший способ сделать это?
MyNamespace.MyClass = {
someProperty: 5,
anotherProperty: false,
init: function () {
//do initialization
},
someFunction: function () {
//do something
}
};
$(function () {
MyNamespace.MyClass.init();
});
По-другому:
MyNamespace.MyClass = (function () {
var someProperty = 5;
var anotherProperty = false;
var init = function () {
//do something
};
var someFunction = function () {
//do something
};
return {
someProperty: someProperty
anotherProperty: anotherProperty
init: init
someFunction: someFunction
};
}());
MyNamespace.MyClass.init();
Первая техникаfeels больше похоже на класс. Я исхожу из серверного фона, если это имеет значение. Вторая техника кажется более излишней и немного неловкой, но я вижу, что она также используется очень часто. Может кто-нибудь помочь пролить свет и посоветовать лучший способ двигаться вперед? Я хочу создать приложение с множеством классов, разговаривающих друг с другом.