4

DOM要素を操作するための単純なフレームワークを構築しています。フレームワークには約40の大きな関数があります。

フレームワーク関数は:

var $ = function(a) { /* content */ };

そしてそれは機能です:

Dev.FN = {
 /* big functions here */
};

フレームワークに関数を含める方法は次のとおりです。

     if($.FN) {
       $.FN.em = em;
       return $.FN;
     }
     $.FN = { em : em };
     for(var b in Dev.FN) {
       if(Dev.FN.hasOwnProperty(b)) {
         $.FN[b] = Dev.FN[b];
       }
     }
     return $.FN;

問題:フレームワークの呼び出しごとに40個の大きな関数が作成されます。つまり、呼び出す$(element1)と40個の関数が作成され、さらに$(element2)40個の大きな関数が作成されます。

呼び出しDev.FNごとに関数を作成せずに、から関数にリンクするにはどうすればよいですか?$(element)

PS:私も次のことを試しましたが、それが役立つかどうかはわかりません:

     for(var b in Dev.FN) {
       if(Dev.FN.hasOwnProperty(b)) {
         $.FN[b] = function() {
           return Dev.FN[b].apply(this, arguments);
         };
       }
     }
4

1 に答える 1

0

宣言をIIFEに貼り付けます。

Dev.FN = (function () {
 /* big functions here */
}) ();

JavaScript では、すべての関数が呼び出されると、新しい実行コンテキストが作成されます。... 多くの場合、makeWhatever 関数が返すものの複数の「インスタンス」は必要なく、1 つのインスタンスだけで十分です。

于 2012-08-23T13:32:48.197 に答える