最佳实践:全局对象与模块

时间:2015-11-25 22:42:15

标签: javascript javascript-objects

我目前正在开展一个项目,并且已经看到以下代码用于存储每个"模块" (如此)在window对象中。多年来我已经完成了大量的Javascript,并且根据我对最佳实践的理解,您希望避免污染全局命名空间。这会被视为污染全局命名空间吗?

(function (global) {
    "use strict";

    // Public methods.
    var exports = {};

    /*
    * Some other configuration / members
    *
    */

    global.Helper = exports.members;
    return exports;

}(window));

我习惯使用模块模式来构建我的Javascript。

以下示例。

var module = (function () {

    var defaultOptions = {
        //some options
    };

    var init = function (options) {
        defaultOptions = $.extend(defaultOptions, options, false);

    };

    /*
    * More code
    *
    */

    //public functions
    return {
        init: init
    }


})();

从最佳实践角度来看,我是理解我还是完全错过了船?

将每个模块存储在窗口对象中是否可以接受?

1 个答案:

答案 0 :(得分:0)

我认为将模块放在全局空间中会更好,因为每个使用模块的人都会被迫只使用窗口变量。

另一个原因 - 总是会定义窗口对象吗?

所有着名的JavaScript模块都在全局范围内定义:jquery,prototype,yii等。