亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

javascript創建函數的20種方式匯總

2019-11-20 12:11:39
字體:
來源:轉載
供稿:網友

工作中常常會創建一個函數來解決一些需求問題,以下是個人在工作中總結出來的創建函數20種方式,你知道多少?

function sayHello(){    console.log('hello');}function leave(){    console.log('goodbye');}//testsayHello();

為完成需求,趕緊聲明一個函數吧

 var sayHello = function(){    console.log('hello');}var leave = function(){    console.log('goodbye');}//testleave();

有求必應,函數表達數來解決

 var Action = {    sayHello : function(){        console.log('hello');    },    leave : function(){        console.log('goodbye');    }}//testAction.sayHello();

創建一個方法對象類看起來更整潔

 var Action = function(){};Action.sayHello = function(){    console.log('hello');}Action.leave = function(){    console.log('goodbye');}//testAction.sayHello();

為單體添加屬性方法,凈化命名空間

 var Action = function(){    return {        sayHello : function(){            console.log('hello');        },        leave : function(){            console.log('goodbye');        }    }}// //testvar a = Action();a.leave();

返回新對象我們還有更多的事情可以做

 var Action = function(){};Action.prototype.sayHello = function(){    console.log('hello');}Action.prototype.leave = function(){    console.log('goodbye');}//testvar a = new Action();a.sayHello();

原型鏈指向防止創建多次

 var Action = function(){};Action.prototype = {    sayHello : function(){        console.log('hello');    },    leave : function(){        console.log('goodbye');    }}//testvar a = new Action();a.leave();

對象賦給原型看上去更整潔

 var Action = function(){    this.sayHello = function(){        console.log('hello');    }    this.leave = function(){        console.log('goodbye');    }}//testvar a = new Action();a.leave();

別忘了還可以在類的內部添加屬性

 Function.prototype.sayHello = function(){    console.log('hello');}Function.prototype.leave = function(){    console.log('leave');}//testvar f = function(){};f.sayHello();

基類原型拓展,新的一片空間

 Function.prototype.addMethod = function(name, fn){    this[name] = fn;}var methods = function(){};methods.addMethod('sayHello', function(){    console.log('hello');});methods.addMethod('leave', function(){    console.log('leave');});//testmethods.sayHello();

通用定義方法函數使用更方便

 Function.prototype.addMethod = function(name, fn){    this.prototype[name] = fn;}var Methods = function(){};Methods.addMethod('sayHello', function(){    console.log('hello');});Methods.addMethod('leave', function(){    console.log('leave');});//testvar a = new Methods();a.leave();

原形賦值我們還可以用類操作

Function.prototype.addMethod = function(name, fn){    this[name] = fn;    return this;}var methods = function(){};methods.addMethod('sayHello', function(){    console.log('hello');}).addMethod('leave', function(){    console.log('leave');});//testmethods.leave();

鏈式操作有何不可

 Function.prototype.addMethod = function(name, fn){    this.prototype[name] = fn;    return this;}var Methods = function(){};Methods.addMethod('sayHello', function(){    console.log('hello');}).addMethod('leave', function(){    console.log('leave');});//testvar a = new Methods();a.leave();

原型+鏈式=更進一步

 Function.prototype.addMethod = function(obj){    for(var key in obj){        this[key] = obj[key];    }}var methods = function(){};methods.addMethod({    sayHello : function(){        console.log('hello');    },    leave : function(){        console.log('goodbye');    }});//testmethods.leave();

添加對象一次做得更多

 Function.prototype.addMethod = function(obj){    for(var key in obj){        this.prototype[key] = obj[key];    }}var Methods = function(){};Methods.addMethod({    sayHello : function(){        console.log('hello');    },    leave : function(){        console.log('goodbye');    }});//testvar a = new Methods();a.leave();

原型有什么不可以

 Function.prototype.addMethod = function(obj){    for(var key in obj){        this[key] = obj[key];    }    return this;}var methods = function(){};methods.addMethod({    sayHello : function(){        console.log('hello');    }}).addMethod({    leave : function(){        console.log('goodbye');    }});//testmethods.leave();

函數式添加對象也可以鏈式操作

 Function.prototype.addMethod = function(obj){    for(var key in obj){        this.prototype[key] = obj[key];    }    return this;}var Methods = function(){};Methods.addMethod({    sayHello : function(){        console.log('hello');    }}).addMethod({    leave : function(){        console.log('goodbye');    }});//testvar a = new Methods();a.leave();

類的鏈式操作也可以做得更多

 Function.prototype.addMethod = function(){    if(arguments.length < 1)        return;    var tostring = Object.prototype.toString;    if(tostring.call(arguments[0]) === '[object Object]'){        for(var key in arguments[0]){            this[key] = arguments[0][key];        }    }else if(typeof arguments[0] === "string" && tostring.call(arguments[1]) === '[object Function]'){        this[arguments[0]] = arguments[1];    }    return this;}

函數添加封裝一下

 Function.prototype.addMethod = function(){    if(arguments.length < 1)        return;    var tostring = Object.prototype.toString;    if(tostring.call(arguments[0]) === '[object Object]'){        for(var key in arguments[0]){            this.prototype[key] = arguments[0][key];        }    }else if(typeof arguments[0] === "string" && tostring.call(arguments[1]) === '[object Function]'){        this.prototype[arguments[0]] = arguments[1];    }    return this;}

類式添加追求的就是個性化

 Function.prototype.addMethod = function(){    if(arguments.length < 1)        return;    var cout = 0,        tostring = Object.prototype.toString,        that;    if(typeof arguments[0] === "boolean" && arguments[0]){        cout++;        that = this;    }else{        that = this.prototype;    }    if(tostring.call(arguments[cout]) === '[object Object]'){        for(var key in arguments[cout]){            that[key] = arguments[cout][key];        }    }else if(typeof arguments[cout] === "string" && tostring.call(arguments[cout + 1]) === '[object Function]'){        that[arguments[cout]] = arguments[cout + 1];    }    return this;}//textvar Text1 = function(){};Text1.addMethod('sayHello', function(){console.log('last say hello!')}).addMethod('leave', function(){console.log('last goodbye!')});var t = new Text1();t.sayHello();t.leave();var test2 = function(){};test2.addMethod(true, 'sayHello', function(){console.log('last say hello!')}).addMethod(true, 'leave', function(){console.log('last goodbye!')});test2.sayHello();test2.leave();

追求個性化,這么做不必說為什么

以上所述就是本文的全部內容了,希望大家能夠喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线日韩第一页| 97精品一区二区视频在线观看| 亚洲国产精品久久91精品| 在线色欧美三级视频| xxav国产精品美女主播| 国产成人中文字幕| 91精品国产91久久久久福利| 色阁综合伊人av| 欧美大秀在线观看| 国产大片精品免费永久看nba| 欧美视频在线视频| 国产精品亚洲片夜色在线| 久久国产精品亚洲| 57pao国产成人免费| 在线视频日韩精品| 成人中文字幕+乱码+中文字幕| 国产一区私人高清影院| 国产精品观看在线亚洲人成网| 久久久久久久激情视频| 国产91色在线免费| 在线播放日韩欧美| 91黑丝高跟在线| 欧美黑人视频一区| 久久亚洲电影天堂| 亚洲国产成人在线播放| 国产色综合天天综合网| 日韩性xxxx爱| 91免费国产网站| 久久这里只有精品视频首页| 国产精品成人aaaaa网站| 国产在线拍偷自揄拍精品| 91精品国产综合久久香蕉最新版| 欧美激情视频一区二区| 国产日韩欧美日韩| 中文字幕日韩精品有码视频| 国产在线精品播放| 欧美亚洲成人网| 中文字幕久久亚洲| 欧美极品少妇xxxxⅹ免费视频| 亚洲男女性事视频| 欧美国产日韩中文字幕在线| 欧美日韩中文在线观看| 欧美韩国理论所午夜片917电影| 国产精品三级久久久久久电影| 黑人极品videos精品欧美裸| 中文字幕少妇一区二区三区| 一本色道久久综合狠狠躁篇怎么玩| 日韩av在线一区二区| 一区二区av在线| 亚州成人av在线| 欧美精品在线免费| 久99九色视频在线观看| 久久精品视频在线播放| 国产午夜精品理论片a级探花| 日韩网站免费观看高清| 日本91av在线播放| 国产亚洲综合久久| 午夜精品美女自拍福到在线| 这里精品视频免费| 欧美性色视频在线| 精品呦交小u女在线| 亚洲视频在线观看网站| 国产精品黄页免费高清在线观看| 日韩免费看的电影电视剧大全| 日韩中文字幕在线视频| 欧美性理论片在线观看片免费| 精品色蜜蜜精品视频在线观看| 午夜精品久久久久久久久久久久| 亚洲美女av网站| 亚洲欧美日韩精品久久奇米色影视| 国产精品自产拍在线观| 91精品啪aⅴ在线观看国产| 欧美激情三级免费| 爽爽爽爽爽爽爽成人免费观看| 欧美日韩在线免费| 欧美理论片在线观看| 亚洲老头同性xxxxx| 91国产一区在线| 91黄色8090| 成人亚洲激情网| 亚洲自拍在线观看| 亚洲美女精品久久| www.色综合| 96sao精品视频在线观看| 午夜精品一区二区三区在线视频| 粉嫩av一区二区三区免费野| 欧美猛交免费看| 日韩成人在线网站| 精品色蜜蜜精品视频在线观看| 国产美女扒开尿口久久久| 国产在线拍揄自揄视频不卡99| 另类视频在线观看| 国产在线视频欧美| 精品电影在线观看| 在线播放精品一区二区三区| 最近2019中文字幕第三页视频| 日韩精品中文字幕在线| 日韩一级裸体免费视频| 亚洲精品资源美女情侣酒店| 国产视频久久网| 国产丝袜一区二区三区| 中文字幕不卡在线视频极品| 91影视免费在线观看| 欧美在线视频网站| 欧美激情亚洲国产| 国内精品久久久| 亚洲a∨日韩av高清在线观看| 亚洲91av视频| 久久国产精品视频| 亚洲欧美在线一区二区| 国产精品久久久久久av福利软件| 国产女精品视频网站免费| 国产精品欧美风情| 欧美性高潮床叫视频| 国产精品黄色影片导航在线观看| 久久国产精品99国产精| 亚洲国产精品电影在线观看| 日本精品免费一区二区三区| 欧美性猛交xxxx| 国产精品久久久久久久午夜| 亚洲国产成人在线视频| 亚洲欧美国产日韩天堂区| 日韩国产精品亚洲а∨天堂免| 上原亚衣av一区二区三区| 亚洲日本欧美中文幕| 日韩成人在线视频| 日本人成精品视频在线| 国产精品视频在线观看| 欧美日韩中文在线| 欧美精品久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 国产欧美日韩中文字幕在线| 色爱精品视频一区| 中文字幕在线看视频国产欧美| 国产精品夫妻激情| 57pao成人国产永久免费| 欧美激情中文字幕乱码免费| 日韩一二三在线视频播| 国产精品人成电影在线观看| 91精品国产99| 日韩成人激情影院| 国产精品入口免费视频一| 久久91精品国产91久久久| 久久人91精品久久久久久不卡| 日韩欧美在线看| 久久天天躁狠狠躁夜夜av| 亚洲精品日韩久久久| 日本不卡高字幕在线2019| 91国产一区在线| 8090理伦午夜在线电影| 欧美性猛交xxxxx水多| 久久全球大尺度高清视频| 美女福利精品视频| 久久精品国产久精国产一老狼| 国产一区二区在线免费视频| 日本韩国在线不卡| 亚洲一级一级97网| 精品久久国产精品| 日韩国产激情在线| 91影视免费在线观看| 国产精品视频区1| 亚洲www在线观看| 91亚洲精品久久久久久久久久久久| 国产成人精品免费视频|