2012-02-23 28 views
2

最近、私はJSコードベースを再配置しようとしているので、匿名関数を大いに利用していて、これがどのように可能であるか疑問に思っています。jQueryの匿名関数 - ネスト関数

(function (listLoad, $, undefined) { 
    listLoad.create = function(data) 
    { 
     this.init = function(data) 
     { 
     } 
    } 
} (window.listLoad = window.listLoad || {}, jQuery)); 

は、私は何を探していることは、明らかに、このような「データマップ」など、すべてのページを初期化するための機能を初期化しているだろうしたように、私の「listLoad」ページのために多くの機能を持っています。

私の主な質問は、この.init関数へのアクセス方法です。私はそれが私的範囲であると推測しています。私が試した:

listLoad.create.init = function(data) 

create.init = function(data) 

とさえinit = function(data)

をすべて無成功にこれを行うにはどのように

listLoad.create.init(); 

を書くとき?私は自分のシナリオについて間違った方向に向いていると感じたら、建築に関する提案を聞いても大丈夫です。

答えて

3

実際、匿名関数の構文は完全ではありません。

まずあなたが終わる括弧でAnnonymousのブロックを実行する必要があります。

var listLoad = {}; 

(function (x) { 
    x.create = { 
     init: function(data) { 
      console.log('plop'); 
     } 
    } 
})(listLoad); 


listLoad.create.init() 

この挑発のプロップは、コンソールにログインして表示されるように:

(function (...) { 
    ... 
})(...) 

をブロックの内部では、あなたのコードは、この方法を改善することができました。

+0

これは素晴らしいことです、ありがとうございます!参考までに、私の関数は実行されていましたが、構文を変更する必要がありました。 listLoad.create = {init:function(data){}} もう一度、ありがとう! –