最近,我开始学习常见的JavaScript模式,并对模块模式提出疑问。
哪种符号(以及为什么)更方便和首选?
“分开”表示法:
var SeparatedApproachModule = (function() {
var _private = { };
var _public = { };
_private.doABarrelRoll = function() {
//Do a barrel roll here
}
_public.buttonDoABarrelRoll_Click = function() {
alert("I am doing a barrel roll!");
_private.doABarrelRoll();
}
return _public;
})();
“聚合”表示法:
var AggregatedApproachModule = (function() {
var _private = {
doABarrelRoll: function() {
//Do a barrel roll here
}
};
var _public = {
buttonDoABarrelRoll_Click: function() {
alert("I am doing a barrel roll!");
_private.doABarrelRoll();
}
};
return _public;
})();
同时发布您使用的其他常见或个人方法及其优势。
答案 0 :(得分:2)
就个人而言,最简单的是阅读,以后要记得越好。我没有返回对象,而是将对象暴露给全局范围:
(function(AsGlobal/*or you can name it Public*/){
// private
var ModuleHelper = {
log : function(message){/*do stuff*/}
}
// Public
AsGlobal.Module = {
save:function(userName){
//saving code
ModuleHelper.log('the user '+ userName +' saved the proyected');
}
}
})(window);// the object that expose my objects to global scope