我目前正在开展一个项目,并且已经看到以下代码用于存储每个"模块" (如此)在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
}
})();
从最佳实践角度来看,我是理解我还是完全错过了船?
将每个模块存储在窗口对象中是否可以接受?
答案 0 :(得分:0)
我认为将模块放在全局空间中会更好,因为每个使用模块的人都会被迫只使用窗口变量。
另一个原因 - 总是会定义窗口对象吗?
所有着名的JavaScript模块都在全局范围内定义:jquery,prototype,yii等。