从publicMethod调用privateMethod的目的是什么? 我们不能只在public方法中定义privateMethod的内容并做同样的事情吗?
var basketModule = (function() {
var basket = [];
function privateMethod() {
console.log(basket);
}
return {
publicMethod: function(){
privateMethod();
}
};
})());
basketModule.publicMethod();
答案 0 :(得分:2)
在您的简单示例中,privateMethod
没有真正存在的原因,因为所有publicMethod
都会调用它,但在更现实的示例中,私有方法会执行以下操作:你不希望其他模块自己打电话。
例如,这是我今天工作的一段代码,简化为一个很好的例子:
(function(){
function _renderTreeLevel() { ... }
function _backfillAllSelectedStates() { ... }
function _updateSelectedCount() { ... }
return {
render: function() {
var expandCollapse = new ExpandCollapse();
expandCollapse.render();
_renderTreeLevel(0, this.ui.treeRegion, this.treeData);
_backfillAllSelectedStates();
_updateSelectedCount((this.options.selected || []).length);
$('.collapse').collapse();
}
};
})();
3"私人"以' _
'开头的功能只是函数,我把代码放入重构,使代码更清晰,更可重用。它们不是我希望有人能够打电话的功能。
此模块的用户应仅呼叫render()
。
推理与内置公共和私有成员的任何其他语言(如C#或Java)相同,但由于JavaScript没有提供该概念,因此这是人们提供类似的模式行为。