Создание объектов 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 создают замыкания, но в чем разница между ними.

Ответы на вопрос(9)

Ваш ответ на вопрос