基于包含函数名称的字符串调用函数

Pho*_*ics 7 javascript jquery

var foo1,foo2;

switch (fn)
{
    case "fade"  : foo1 = "fadeOut"; foo2 = "fadeIn"; break;                
    case "slide" : foo1 = "slideUp"; foo2 = "slideDown"; break;
}

eval("$('.cls1')." + foo1 + "();");
currentSlideIndex = currentSlideIndex + n;
eval("$('.cls1')." + foo2 + "();");
Run Code Online (Sandbox Code Playgroud)

没有使用eval可以更好地实现这一目标吗?除非绝对必要,否则我不是使用eval的忠实粉丝.

Tom*_*tel 4

foo1由于存储在和中的函数名称foo2是返回的对象的属性$('.cls1'),因此以下内容应该有效:

$('.cls1')[foo1]();
Run Code Online (Sandbox Code Playgroud)

与 相同foo2