2016-03-25 12 views
-1

私はいくつかの汎用ユーティリティ関数を公開するプロジェクト用のJSファイルを作成しようとしています。私は前に次の2つのパターンを使用しましたが、完全にはそれらとは確信しませんでした。JSユーティリティ関数を公開するための最良のパターンの特定

パターン1

var objUtils = { 
 
\t foo: function(){ 
 
\t \t //code 
 
\t }, 
 
\t bar: function(){ 
 
\t \t //code 
 
\t \t //foo can't be called 
 
\t } 
 
}

上記パターンに伴う問題は、Iクロス呼び出す関数を呼び出すことができないことです。上記のパターンでの問題は、私は私がした新しい機能を追加するたびに、私はリターンブロックに追加していることを確認することです

パターン2

var objUtils = (function(){ 
 
\t var foo = function(){ 
 
\t }, 
 
\t bar = function(){ 
 
\t } 
 
\t 
 
\t return{ 
 
\t \t foo : foo, 
 
\t \t bar : bar 
 
\t } 
 
})();

それを露出させるために、私は冗長な仕事のような感じです。

どのような考えですか?

+2

'foo'は(this.foo' 'のようなbar'の内部で呼び出すことができます)あなたは)' objUtils.bar(のようにそれを呼び出す場合、 '' ES6モジュールから – elclanrs

+1

名前輸出は一つであり、最近は本当に真実です。 – Bergi

+0

それは愚かだった私はthis.foo()を試していない。行く道。 – NLV

答えて

1

JavaScriptモジュールパターンを使用できます。 公開する関数を使用してオブジェクトを作成し、このオブジェクトに関数を直接追加します。たとえば、次のように

var objUtils = (function() { 
    var moduleObj = {}; 

    moduleObj.foo = function() { 
     // ... 
    }; 

    moduleObj.bar = function() { 
     // ... 
    }; 

    return moduleObj; 
}()); 
関連する問題