javascript函數的幾種寫法集合

1.常規寫法json

1 function fnName(){
2     console.log("常規寫法");
3 }

2.匿名函數,函數保存到變量裏函數

1 var myfn = function(){
2     console.log("匿名函數,函數保存到變量裏");
3 }

3.若是有多個變量,能夠用對象收編變量this

  3.1 用json對象spa

 1 var fnobject1={
 2     fn1:function(){
 3           console.log("第一個函數");
 4     },
 5     fn2:function(){
 6           console.log("第二個函數");
 7     },
 8     fn3:function(){
 9           console.log("第三個函數");
10     }
11 }

  3.2 聲明一個對象,而後給它添加方法prototype

 1 var fnobject2 = function(){};
 2 fnobject2.fn1 = function(){
 3     console.log("第一個函數");
 4 }
 5 fnobject2.fn2 = function(){
 6     console.log("第二個函數");
 7 }
 8 fnobject2.fn3 = function(){
 9     console.log("第三個函數");
10 }

  3.3 能夠把方法放在一個對象函數裏code

 1 var fnobject3 = function(){
 2     return {
 3         fn1:function(){
 4             console.log("第一個函數");
 5             },
 6         fn2:function(){
 7              console.log("第二個函數");
 8          },
 9           fn3:function(){
10             console.log("第三個函數");
11          }    
12     }    
13 };

4.可用類來實現,注意類的第二種和第三種寫法不能混用,不然一旦混用,如在後面爲對象的原型對象賦值新對象時,那麼他將會覆蓋掉以前對prototype對象賦值的方法對象

  4.1 第一種寫法blog

 1 var fnobject4 = function(){
 2     this.fn1 = function(){
 3         console.log("第一個函數");
 4     }
 5     this.fn2 = function(){
 6         console.log("第二個函數"); 
 7     }
 8     this.fn3 = function(){
 9         console.log("第三個函數");
10     }
11 };

   4.2 第二種寫法原型

 1 var fnobject5 = function(){};
 2 fnobject5.prototype.fn1 = function(){
 3     console.log("第一個函數");
 4 }
 5 fnobject5.prototype.fn2 = function(){
 6     console.log("第二個函數");
 7 }
 8 fnobject5.prototype.fn3 = function(){
 9     console.log("第三個函數");
10 }

  4.3 第三種寫法io

 1 var fnobject6 = function(){};
 2 fnobject6.prototype={
 3     fn1:function(){
 4         console.log("第一個函數");
 5     },
 6     fn2:function(){
 7         console.log("第二個函數");
 8     },
 9     fn3:function(){
10         console.log("第三個函數");
11     }
12 }

  4.4 第四種寫法

var fnobject7 = function(){};
fnobject7.prototype={
    fn1:function(){
        console.log("第一個函數");
        return this;
    },
        fn2:function(){
        console.log("第二個函數");
        return this;
    },
    fn3:function(){
        console.log("第三個函數");
        return this;
    }
}

5.對Function對象類的擴展(下面三種只能用一種)

  5.1 第一種寫法(對象)

 1 Function.prototype.addMethod = function(name,fn){
 2     this[name] = fn;
 3  }
 4 var methods=function(){};//var methods=new Function();
 5 methods.addMethod('fn1',function(){
 6     console.log("第一個函數");
 7 });
 8 methods.addMethod('fn2',function(){
 9     console.log("第二個函數");
10 });
11 methods.addMethod('fn3',function(){
12     console.log("第三個函數");
13 });

  5.2 鏈式添加(對象)

 1 Function.prototype.addMethod = function(name,fn){
 2     this[name] = fn;
 3     return this;
 4  }
 5 var methods=function(){};//var methods=new Function();
 6 methods.addMethod('fn1',function(){
 7     console.log("第一個函數");
 8 }).addMethod('fn2',function(){
 9     console.log("第二個函數");
10 }).addMethod('fn3',function(){
11     console.log("第三個函數");
12 });

  5.3 鏈式添加(類)

Function.prototype.addMethod = function(name,fn){
    this.prototype[name] = fn;
    return this;
}
var Methods=function(){};//var methods=new Function();
methods.addMethod('fn1',function(){
    console.log("第一個函數");
}).addMethod('fn2',function(){
    console.log("第二個函數");
}).addMethod('fn3',function(){
    console.log("第三個函數");
});
相關文章
相關標籤/搜索