这两种JavaScript模式之间有什么区别吗?

Ver*_*onW 8 javascript design-patterns

看一些JavaScript库和其他人的代码,我看到了两种常见的模式,我不知道使用其中一种是否存在差异或优势.模式看起来像这样:

1.

var app = (function () {
    // Private vars

    // Module
    var obj = {
        prop: "",
        method: function () {}
    };

    return obj;
})();
Run Code Online (Sandbox Code Playgroud)

2.

(function () {
    // Private vars

    // Module
    var obj = {
        prop: "",
        method: function () {}
    };

    window.app = obj;
})();
Run Code Online (Sandbox Code Playgroud)

这些模式是相同的还是其中一个比另一个具有优势或用途?

提前致谢.

Thi*_*ilo 5

第二个假设存在window在父范围内调用的对象,并在该范围内分配属性。

第一个将其留给调用者来进行分配,并且不依赖于window被定义的对象(它可能仅在Web浏览器内部)。

因此,我想说第一个肯定更好(更独立,对环境的依赖性较小)。