我经常使用这种结构:
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 () {...
}
};
}());
当然,这是一个极其简化的示例。问题是我有很多私有(private)函数,我想知道嵌套是好还是不好。我知道这很可能是个人喜好问题,但我们将不胜感激地接受任何建议。
谢谢。
最佳答案
视情况而定。如果您有几个仅与另一个私有(private)函数相关的私有(private)函数,那么在这种情况下,对象或类可能会封装更多的功能,而不是应该的。
这里有一些问题要问:
- 这些私有(private)函数有副作用吗?也就是说,他们是 操纵任何封闭的属性?如果不是,这是不是一些普遍的 可以静态实现并包含的逻辑 分别地?或者,这些私有(private)函数是否操纵了 可以移动到另一个类或对象的属性?
- 私有(private)函数是在内部使用的简单任务特定辅助函数吗 更大的算法或控制功能;例如用于排序的过滤函数 数组,或其他某种迭代回调?如果是这样,那么它可能是事实上 清洁器将这些功能嵌套在内部并将它们置于主要范围之外 目的。其他代码是否需要这些功能?
- 主私有(private)函数会被调用多少次?如果它会被称为非常 频繁地(在循环内或定时器间隔内)然后嵌套 内部的私有(private)函数可能会产生可测量的开销—— 如果有私有(private)功能,本来可以忽略不计 只是偶尔被调用。
总是需要权衡取舍,思考这些问题将帮助您决定什么最适合您的特定情况。
关于Javascript:私有(private)函数的嵌套——好还是坏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11873566/