Создание объектов Javascript - несколько подходов, есть ли различия
Я видел несколько разных способов создания экземпляров объектов в 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's$
синтаксис - но вы также можете сделать это с подходом 2 ...
Благодарю.
Редактировать:
Мне известно, что подходы 1 и 3 похожи (в том смысле, что они оба возвращают объекты), однако подход 3 также создает замыкание. Какой подход 2 также делает.
Это основа моего вопроса, и 2, и 3 создают замыкания, но в чем разница между ними.