3

アプリケーションの一部の画面で js コードを実行する必要があり、myScreen1()..myScreen3() のようなビュー ID で関数に名前を付ける必要があります。

しかし、関数定義はすべての関数名で同じなので、すべての関数名が同じ定義を参照するように宣言する方法はありますか?

4

4 に答える 4

9

以下は機能しますが、関数名を 1 つだけ使用することも可能である可能性が高いため、設計を再考する必要があるかもしれません。

var func = function() {
    // definition goes here
}
var myScreen1 = func;
var myScreen2 = func;
于 2013-11-02T19:11:05.313 に答える
2

それらを別の関数でラップします。

function handleScreen( screenName ) {
    // do stuff in common with all screens here
    // and call specific functions for specific screens
   if (typeof window[screenName] == "function") {window[screenName]();}
}
function screen1() {
   //do stuff for screen 1
}
function screen2() {
   //do stuff for screen 2
}

handleScreen("screen2");
于 2013-11-02T19:11:49.863 に答える
2

@Peter Van der Walのコードを少し圧縮すると、

var myScreen1, myScreen2, myScreen3;
myScreen1 = myScreen2 = myScreen3 = function() {
    // definition goes here
};

しかし、本当に、もし...

関数定義はすべての関数名で同じです

... 、またはmyScreen()の代わりに使用できませんでしたか?myScreen1()myScreen2()myScreen3()

そして、私は興味があります: すべてが同じことをした場合、どのように呼び出すかをどのように決定しますか?

于 2013-11-02T19:16:41.057 に答える
0

以下は機能するはずですが、最後に示すように区分化できます。

function handleScreen( viewID ) {
    if(viewID == 1){
        // Do Stuff For Screen 1
    } else if(viewID == 2){
        // Do Stuff For Screen 2
    }
}
handleScreen(2);

このようにして、関数を 1 つだけ定義し、必要に応じて、以下に示すような特定の関数を使用して区分化できます。

function handleScreen( viewID ) {
    if(viewID == 1){
        displayLoadSign();
        loadList();
        hideLoadSign();
    } else if(viewID == 2){
        showConnectionError();
        displayLoadSign();
    }
}
handleScreen(2);

そうすれば、コードを何度も書く必要がなくなります。

于 2013-11-02T20:15:09.160 に答える