2016-04-01 125 views
0

从publicMethod调用privateMethod的方式是什么? 我们不能只在public方法中定义privateMethod的内容,并且做同样的事情吗?在公共函数中调用私有函数的基本用途是什么?

var basketModule = (function() { 

     var basket = []; 

    function privateMethod() { 
     console.log(basket); 
    } 

    return { 
     publicMethod: function(){ 
       privateMethod(); 
     } 
    }; 

})()); 
basketModule.publicMethod(); 
+2

如果你在public方法中定义它,那么你每次都重新创建私有方法。 – elclanrs

+1

你拥有的例子是有意思的。如果你要写的东西完全一样,那么是的,没有理由拥有私人功能。但通常你有执行其他外界不应该关心的工作的私人功能。 –

+0

当你想做一些属性更新任务可能是; – itzmukeshy7

回答

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没有提供该概念,因此这是人们遵循的用于提供类似行为的模式。

相关问题