if_else:
if(...){
}else if(...){
}else{
}
switch:
switch(name){
case ...:{
break;
}
case ...:{
break;
}
default:{
}
}
疑问:诸如上述这些链式代码,倘若,我们想将其扁平化链式处理呢?如下:
_if(fn1)._elseIf(fn2)._else(fn3);
下面我们就来一起尝试实现下呗。
以下是作者仿照写的代码,其实不论Java,PHP,javascript(前端和后端)还是平面,扁平化真是一个趋势!扁平话代码,扁平化逻辑处理,扁平化的界面!
- var name="qiyulin";
-
- //判断
- if(name=="qiyulin"){
- console.log("I am qiyulin");
- }else if(name=="lisi"){
- console.log("He is lisi!");
- }else{
- console.log("who are you?");
- }
-
-
- //javascrpt的单链表实现 demo1 这样是实现了但是需要每次使用都要初始化一次arr
- var f1 = function(name){
-
- if(name=='qiyulin') console.log('I am qiyulin');
- else return 1;
-
- }
- var f2 = function(name){
- if(name=='lisi') console.log('He is lisi!');
- else return 1;
- }
- var f3 = function(){
- console.log("who are you?");
- }
- var arr = [];
- //方法执行
- arr.add = function(f){
- if(typeof f=='function'){
- arr.push(f);
- return this;
- }
- }
- arr.execute = function(){
- for(var i=0;i<this.length;i++){
- if(this[i](name)!=1){
- break;
- }
- }
- }
- //封装
- arr.add(f1).add(f2).add(f3).execute();
-
- //怎么办呢? 把所有内容包含在一个function中 每次使用则new一下
- var tt = function(){
- this.arr=[];
- this.add = function(f){
- if(typeof f=='function'){
- this.arr.push(f);
- return this;
- }
- };
- this.execute = function(){
- for(var i=0;i<this.arr.length;i++){
- if(this.arr[i](name)!=1){
- break;
- }
- }
- };
- }
- var tt1 = new tt();
- tt1.add(f1).add(f2).add(f3).execute();
-
- var tt2 = new tt();
- tt2.add(f1).add(f3).execute();
-
- //怎么才能只让他创建一遍呢?
- var xx = function(){
- this.arr=[];
- }
- xx.prototype={
- add : function(f){
- if(typeof f=='function'){
- this.arr.push(f);
- return this;
- }
- },
- execute : function(){
- for(var i=0;i<this.arr.length;i++){
- if(this.arr[i](name)!=1){
- break;
- }
- }
- }
- }
-
- var $yy = function(){
- return new xx();
- }
- $yy().add(f1).add(f2).add(f3).execute();
- $yy().add(f2).add(f3).execute();
- //类似 jquery