我经常使用这种结构:
var example = (function () {
function privateFn2 () {
...
}
function privateFn1 () {
...
}
return {
publicMethod1: function () {...
},
publicMethod2: function () {...
}
};
}());
我想知道的是:如果privateFn1是调用privateFn2的唯一函数/方法,那么将它设置为更好的做法如下所示?
为清晰起见而已编辑
var example = (function () {
function privateFn1() {
function privateFn2() {
}
...
privateFn2();
}
return {
publicMethod1: function () {...
},
publicMethod2: function () {...
}
};
}());
当然,这是一个非常简单的例子。问题是我有很多私有函数,我想知道嵌套是否被很好地考虑。我认识到这很可能是一个偏好问题,但任何建议都会感激不尽。
感谢。
答案 0 :(得分:5)
这取决于具体情况。如果你有几个只与另一个私有函数相关的私有函数,那么这可能就是对象或类包含的功能应该是它应该是的。
以下是一些问题:
总是需要考虑权衡,考虑这些问题可以帮助您确定最适合您特定情况的问题。
答案 1 :(得分:3)
我会避免你的第二个例子。每次调用privateFn1
时,它都会重新定义privateFn2
。为什么不做一次呢?您甚至可能需要稍后在其他地方使用它。
但是,如果你真的想要隐藏privateFn2
,那么更好的解决方案就是:
var privateFn1 = (function () {
function privateFn2() {
// ...
}
return function () {
privateFn2();
// ...
};
})();