2016-04-01 9 views
0

publicMethodからprivateMethodを呼び出す理由は何ですか? publicメソッド内でprivateMethodのコンテンツを定義して同じことを行うことはできませんか?あなたの簡単な例ではpublic関数内でprivate関数を呼び出す基本的な使い方は何ですか?

var basketModule = (function() { 

     var basket = []; 

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

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

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

パブリックメソッド内で定義する場合は、毎回プライベートメソッドを再作成します。 – elclanrs

+1

あなたが持っている例が考案されています。あなたがそのようなものを書いたのであれば、私的な機能を持つ理由はありません。しかし、通常、外界が気にするべきではない他の種類の作業を実行するための私的な機能を持っています。 –

+0

いくつかのプロパティの更新タスクを実行したいときは、 – itzmukeshy7

答えて

2

publicMethodが行うすべてはそれを呼び出すですので、privateMethodが存在する理由は本当にありませんが、より現実世界の例では、民間の方法は、あなたがいない事をするだろう他のモジュールが独自に呼び出すことを望みます。

例えば、これは良い例にするために減少し、私は今日で働いていたコードの抜粋です:「_」で始まる

(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はそのコンセプトを提供しないため、これは人々が同様の動作を提供するために従うパターンです。