3

我有一个要求,我需要为我的应用程序中的某些屏幕执行 js 代码,并且我需要使用 viewid 命名函数,例如 myScreen1()..myScreen3()。

但是由于所有函数名的函数定义都相同,有没有办法声明所有函数名都引用相同的定义?

4

4 回答 4

9

以下将起作用,但也许您应该重新考虑您的设计,因为很可能它也可能只使用一个函数名称。

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);

这样,您只定义了一个函数,如果您愿意,可以使用如下所示的某些函数进行划分。

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

这样你就不会多次编写代码。

于 2013-11-02T20:15:09.160 回答