1

コードをモジュールに分割しようとしていますが、アプリの他のモジュールを参照する際に問題が発生します。

MYAPP = (function(my_app)
{

    var funcs = my_app.funcs;

    var module2 =
    {
         stupid_function = function ()
         {
            var some_var = "auwesome!";

            //let's call something from the other module...
            funcs.do_whatever();
         };

    };

    my_app.module2 = module2;

    return my_app;

})(MYAPP);

問題は、MYAPP.funcsが変更されたときに発生します。たとえば、初期化して新しいメソッドを追加すると、クロージャー内に「funcs」が作成されたため、MYAPP.funcsのコピーがあり、必要な新しいものがありません。

これは、「funcs」がより多くのメソッドを取得する方法です...メソッドMYAPP.funcs.init()を実行すると、MYAPP.funcsが自動的に書き直されます。

var MYAPP = (function (my_app, $)
{

    'use_strict';

     my_app.funcs = {};

         my_app.funcs.init = function ()
         {
            panel = my_app.dom.panel;
            funcs = my_app.funcs;
                query_fns = funcs.query;

                 my_app.funcs =
                 {
                       some_method: function () { ... },
                       do_whatever: function () { ... }
                 };

          };


    return my_app;

}(APP, jQuery));

前もって感謝します!!


誰にとっても面白い場合は...

私がモジュリングに使用している方法は、「タイトな拡張」ですhttp://webcache.googleusercontent.com/search?hl=es-419&q=cache%3Aadequatelygood.com%2F2010%2F3%2FJavaScript-Module-Pattern-In-Depth&btnG ==

4

1 に答える 1

0

モジュールやグローバルとは何の関係もありません...違いは、オブジェクト変数ポイントを変更する場合、またはどの変数がポイントするかです。

var first = {my:"test"};
var second = first; // second points to object {my:"test"}
first.foo = 42; // updating the object, second points to it and can see the change
first = {my:"other"}; // new object, second still points to old  {my:"test", foo:42}
于 2012-10-08T15:44:18.977 に答える