Я видел несколько разных способов создания объектов в javascript, хотел узнать преимущества/недостатки различных подходов и почему вы использовали бы один из них.
Подход 1
var obj = {
prop: value,
.
.
.
}
Подход один - стандартный подход, ничего нового:)
Подход 2
var obj = new function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
this.prop2 = value2;
.
.
.
}();
Функциональный подход, я хотел сравнить этот подход с подходом 3. Функциональный подход в основном используется для инкапсуляции (правильно?)
Подход 3
var obj = (function() {
var prop1 = value1;
var fn1 = function() {
};
.
.
.
return {
prop2: value2,
.
.
.
}
})();
При таком подходе я не совсем понимаю причины его использования. Как он отличается от подхода 2? Оба могут использоваться для инкапсуляции логики.
Это значит, что мы можем передавать параметры, поэтому мы можем иметь дело с любыми потенциальными конфликтами? Например, синтаксис jquery $
, но вы также можете сделать это с помощью подхода 2...
Спасибо.
Edit:
Я знаю, что подход 1 и 3 схожи (в том, что они оба возвращают объекты), однако подход 3 также создает замыкание. Какой подход 2 также делает.
Это основа моего вопроса, и как 2, так и 3 создают замыкания, но в чем разница между ними.