Javascript criando objetos - múltiplas abordagens, quaisquer diferenças?

Eu vi algumas maneiras diferentes de instanciar objetos em javascript, queria saber os benefícios / desvantagens das várias abordagens e por que você usaria uma sobre a outra.

Abordagem 1

var obj = {
    prop: value,
    .
    .
    .
}

A abordagem um é a abordagem padrão, nada de novo :)

Abordagem 2

var obj = new function() {
    var prop1 = value1;
    var fn1 = function() {
    };
    .
    .
    .

    this.prop2 = value2;
    .
    .
    .
}();

A abordagem de função, eu queria comparar essa abordagem com a abordagem 3. A abordagem de função é usada principalmente para encapsulamento (correto?)

Abordagem 3

var obj = (function() {
    var prop1 = value1;
    var fn1 = function() {
    };
    .
    .
    .

    return {
        prop2: value2,
        .
        .
        .
    }
})();

Com essa abordagem, não vejo exatamente o raciocínio por trás de seu uso. Como isso difere da abordagem 2? Ambos podem ser usados ​​para encapsular a lógica.

É para que possamos passar parâmetros, para que possamos lidar com possíveis conflitos? Por exemplo, o jquery$ sintaxe - mas você também pode fazer isso com a abordagem 2 ...

Obrigado.

Editar:

Estou ciente de que a abordagem 1 e 3 são semelhantes (no fato de que ambos retornam objetos), no entanto, a abordagem 3 também cria um fechamento. Qual abordagem 2 também faz.

Essa é a base da minha pergunta, na verdade, tanto 2 quanto 3 criam fechamentos, mas qual é a diferença entre eles.

questionAnswers(9)

yourAnswerToTheQuestion