2

Marionette を使用すると、モジュールの定義を別々のファイルに分割できます。

モジュールの 1 つの部分で定義されたプライベート変数または関数に、モジュールの 2 番目の部分からアクセスすることは何とか可能ですか? 例えば:

//in module1.js
App.module("MyModule", function(MyModule, App, Backbone...){
    myPrivateVar = 0;
}

//in module2.js
App.module("MyModule", function(MyModule, App, Backbone...){
    var myPrivateFunction = function(){
        if (myPrivateVar>0){
            //do something
        }
    }
}
4

1 に答える 1

5

それはいけません。これはマリオネットに限ったことではありません。

JavaScript の変数は関数スコープです。つまり、関数内で宣言された変数は、その関数内でのみ使用できます。

偽のプライベート変数 (実際にはパブリック) を定義するための一般的な規則は、名前の前にアンダースコアを付けることです。

//in module1.js
App.module("MyModule", function(MyModule, App, Backbone...){
    MyModule._myPrivateVar = 0;
});

//in module2.js
App.module("MyModule", function(MyModule, App, Backbone...){
    var myPrivateVar = MyModule._myPrivateVar;
    var myPrivateFunction = function(){
        if (myPrivateVar>0){
            //do something
        }
    }
});

_モジュールの外部から接頭辞が付いた変数にアクセスしないように注意するかどうかは、あなた次第です。モジュールのロード順序にも注意する必要があります。_myPrivateVar定義するには、module1.js を module2.js の前にロードする必要があります。

于 2013-02-19T09:34:35.517 に答える