我有一个要求,我需要为我的应用程序中的某些屏幕执行js代码,我需要使用viewid命名函数,如myScreen1().. myScreen3()。
但由于函数定义对于所有函数名称都是相同的,有没有办法声明所有函数名称都引用相同的定义?
答案 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);
这样你就没有多次编写代码了。