如何在javascript中使用多个名称定义相同的函数

时间:2013-11-02 19:08:08

标签: javascript jquery performance

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

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

4 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分: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");

答案 2 :(得分:2)

压缩一点@Peter Van der Wal的代码,

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

但实际上,如果......

  

所有函数名称的函数定义相同

...无法使用myScreen()代替myScreen1()myScreen2()myScreen3()

我很好奇:你怎么决定你打电话给哪一个,如果所有人都这样做的呢?

答案 3 :(得分: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);

这样你就没有多次编写代码了。