目前我有这样的结构:
(function(myScope) {
myScope.public = function() {alert("I'm public!")};
myScope.privileged = function() {alert("I can call private!"); private();};
var private = function() {alert("I'm private!")};
})(window.myObj);
工作正常。 private
无法访问外部世界,privileged
可以调用它。但现在私有部分太大了,我希望将其解压缩出来。我想让它从外部无法访问,但它需要由特权函数调用。有没有办法实现这个目标?
更新
以上只是一个例子。一般的问题是,随着应用程序的扩展,单个js文件变得越来越长且难以管理。目标是将这样的js文件拆分为模块,而不会影响隐私。
答案 0 :(得分:0)
您需要将代码分解为更小的部分。对于每件事,您可能希望使实例引用为local-scoped,但您可以从其他文件中导入类/代码/功能。
将您的示例炸成三个文件:
function makeAlerter(state) {
return function() {
alert("I'm "+state);
};
}
(function(myScope) {
var private = makeAlerter("private"); // not the whole private coding here
myScope.privileged = function() { // but the privileged code needs to stay
alert("I can call private!"); private();
};
})(window.myObj);
(function(myScope) {
myScope.public = function() {alert("I'm public!")};
})(window.myObj);