使用命令对象代替switch语句的写法示例
曾经有人说过,真正好的程序是没有if..else的,当然switch还不如if..else。JS规范里面是禁止使用switch的。
命令对象(commandobject)就完美的解决了这个问题。
引用一篇国外的博客提到的:
JavaScript有着良好的控制流程语句,这些语句往往用花括号包裹着。不过有个例外:switch…case语句。switch…case的奇怪之处在于你必须在每个case末尾加上关键字break,以防止流程控制权穿越进入下一个case语句中。穿越是指让多条case执行的手法,当未遇见预期的break时,控制权就自动交到下一句case手中。然而,就如同分号与花括号一样,你很有可能会在不经意之间忘了写break,当这发生时,后期的错误排查就比较痛苦,因为语句本身是没错的。因此,配对地写case…break是个好习惯。
我们通常讲,JavaScript有着优雅的对象字面量与顶级函数,这些都使得特定的方法查询变的非常简单。为方法查询所创建的对象,我们称之为活动对象(actionobject)或命令对象(commandobject),它被运用在许多软件设计模式中,包括强大的而有用的命令模式。
实例:
//switch方法
functiontestSwitch(name){
switch(name){
case'1':
return'hack';
break;
case'2':
return'slash';
break;
case'3':
return'run';
break;
default:
returnfalse;
break;
}
}
//使用命令对象
functiontestFn(name){
varnames={
'1':function(){
return'hack';
},
'2':function(){
return'slash';
},
'3':function(){
return'run';
}
};
if(typeofnames[name]!=='function'){
returnfalse;
}
returnnames[name]();
}
//测试结果
varresult1=testSwitch('1');
varresult2=testFn('2');
console.info(result1,result2);
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下