Here是关于JavaScript中各种“模块模式”的很好的文章。关于如何扩充模块或名称空间以及维护跨文件私有状态,有一个很好的小节。也就是说,单独文件中的代码将按顺序执行,并在执行后正确地增加名称空间。
我还没有彻底探索过这种技术,所以没有承诺......但这里是基本的想法。
dashboard.js
(function(window){
var dashboard = (function() {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
window.Dashboard = dashboard;
})(window);
dashboard.ajax.js
var dashboard = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function() {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function() {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
my.ajax = function(){
// ...
}
return my;
}(dashboard || {}));
dashboard.retrieveContent。JS
var dashboard = (function (my) {
var _private = my._private = my._private || {},
_seal = my._seal = my._seal || function() {
delete my._private;
delete my._seal;
delete my._unseal;
},
_unseal = my._unseal = my._unseal || function() {
my._private = _private;
my._seal = _seal;
my._unseal = _unseal;
};
// permanent access to _private, _seal, and _unseal
my.retrieveContent = function(){
// ...
}
return my;
}(dashboard || {}));
名称命名空间一些不同的东西? – 2010-08-05 00:50:42
我想这是一种选择,但是我希望将所有东西都包含在一个命名空间下,因为我认为它会更有序。 – 2010-08-05 01:14:52