我的 javascript 模块中有以下代码,但这需要我使这些函数对外界可见。
var mymodule = function() {
var self = null,
init = function () {
self = this;
$('.actionButton').click(function () {
var worklistId = $(this).data('worklistid'),
action = $(this).data('action');
self[action] && self[action](worklistId); //watchout methods marked as not used are used by this invocation
})
},
send = function () {
// some logic
},
finish = function () {
// some logic
},
delete = function () {
// some logic
};
return {
init: init,
send: send,
finish: finish,
delete: delete
};
}();
mymodule.init();
所以我唯一想在我的模块中返回的是 init 函数。但是,当我这样做时,我无法调用函数,因为对象(自身)仅包含在外部可见的 init 函数。
return {
init: init
};
有没有任何解决方案可以像这样调用我的函数而不让它们对外界可见?请不要使用 if else 语句,因为我的工作流程比本示例中的 3 个操作要大。我想让我的模块尽可能封闭,因为这减少了依赖关系。
更新
这是一个更新的jsfiddle,其中一个建议的解决方案,但是这给了我另一个问题。http://jsfiddle.net/marcofranssen/bU2Ke/