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("第三個函數"); });