日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JavaScript鏈式調用原理與實現方法詳解

瀏覽:123日期:2023-10-26 13:57:30

本文實例講述了JavaScript鏈式調用原理與實現方法。分享給大家供大家參考,具體如下:

1、什么是鏈式調用?

這個很容易理解,例如

$(’text’).setStyle(’color’, ’red’).show();

一般的函數調用和鏈式調用的區別:鏈式調用完方法后,return this返回當前調用方法的對象。

首先,我們先來看看一般函數的調用方式

(1)先創建一個簡單的類

//創建一個bird類 function Bird(name) { this.name=name; this.run=function () { document.write(name+' '+'start run;');} this.stopRun=function () { document.write(name+' '+'start run;');} this.sing=function () { document.write(name+' '+'start sing;'); } this.stopSing=function () { document.write(name+' '+'start stopSing;'); } }

(2)使用方式:一般的調用方式

var bird=new Bird('測試'); bird.run(); birdbird.sing(); bird.stopSing(); bird.stopRun();

//結果為;測試 start run;測試 start sing;測試 start stopSing;測試 start run;

(3)總結,該種方式有一個弊端就是:多次重復使用一個對象變量

然后,我們再來看看將上述改成鏈式調用的格式

(1)在創建的簡單類中加上return this,如下

//創建一個bird類 function Bird(name) { this.name=name; this.run=function () { document.write(name+' '+'start run;'); return this;// return this返回當前調用方法的對象。 } this.stopRun=function () { document.write(name+' '+'start run;'); return this; } this.sing=function () { document.write(name+' '+'start sing;'); return this; } this.stopSing=function () { document.write(name+' '+'start stopSing;'); return this; } }

(2)使用鏈式調用(連綴的方式)

var bird=new Bird('測試'); bird.run().sing().stopSing().stopRun();//結果為;測試 start run;測試 start sing;測試 start stopSing;測試 start run;

(3)總結此種方式的調用結果與一般的調用方式產生的結果一樣,優點是:鏈式調用這種風格有助于簡化代碼的編寫工作,讓代碼更加簡潔、易讀,同時也避免多次重復使用一個對象變量

2.模仿jquery的鏈式調用

第一步,定義一個含參數的空對象

(function(){ //下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象})()//程序啟動的時候 里面的代碼直接執行了

第二步,準備方法 在_$上定義一個onrReady方法

(function(){ //第一步,下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象 //第二步,準備方法 在_$上定義一個onrReady方法 _$.onrReady=function (fn) { //按要求把對象(_$)注冊到window對象上 //對外開放的接口 window.$=function () { return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } fn(); } }})()

第三步,為了類(Function)能擴展函數,我們定義一個它的靜態函數

Function.prototype.method=function (name,fn) {//(函數名稱,函數本身) this.prototype[name]=fn; return this;//鏈式調用關鍵};//這個函數的意思:為function對象增加函數,會用鏈式調用,鏈式調用有兩個參數name,和fn

第四步,擴展類的相應方法 鏈式的對象增加jquery庫提供的操作函數

(function(){ //下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象 //第二步,準備方法 在_$上定義一個onrReady方法 _$.onrReady=function (fn) { //按要求把對象(_$)注冊到window對象上 //對外開放的接口 window.$=function () { return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } fn(); } //第四步 //擴展類的相應方法 鏈式的對象增加jquery庫提供的操作函數 _$.method('AddEvent',function (type,fn) {//_$本身是一個function要繼承原型鏈上的東西。 fn();}).method('getEvent',function (fn,e) { fn();})})()

第五步,使用 ,需要調用_$.onReady方法才可以返回對象使用從function類繼承而來的原型上的方法

(function () { // (1)下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象 //(2)準備方法 在_$上定義一個onrReady方法 // window.$=_$; _$.onrReady=function (fn) { //按要求把對象(_$)注冊到window對象上 在任何地方都可以使用 //對外開放的接口 window.$=function () {//window 上先注冊一個全局變量 與外界產生關系 return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } fn(); } //(4)擴展類的相應方法 鏈式的對象增加jquery庫提供的操作函數_$.method('AddEvent',function (type,fn) {//_$本身是一個function要繼承原型鏈上的東西。 fn();}).method('getEvent',function (fn,e) { fn();}); //第五步,開始使用 ,需要調用_$.onready方法才可以返回對象使用從function類繼承而來的原型上的方法 _$.onrReady(function () {//$是綁定在Windows上的 $('').AddEvent('click',function () { alert('click') }) })})()

上述綜合的代碼為

//第三步,為了類(Function)能擴展函數,我們定義一個它的靜態函數Function.prototype.method=function (name,fn) {//(函數名稱,函數本身) this.prototype[name]=fn; return this;//鏈式調用關鍵};//這個函數的意思:為function對象增加函數,會用鏈式調用,鏈式調用有兩個參數name,和fn(function () { // 第一步,下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象 //第二步,準備方法 在_$上定義一個onrReady方法 // window.$=_$; _$.onrReady=function (fn) { //按要求把對象(_$)注冊到window對象上 //對外開放的接口 window.$=function () { return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } fn(); } //第四步,擴展類的相應方法 鏈式的對象增加jquery庫提供的操作函數_$.method('AddEvent',function (type,fn) {//_$本身是一個function要繼承原型鏈上的東西,所以可以使用method方法 fn();}).method('getEvent',function (fn,e) { fn();}); //第五步,開始使用,需要調用_$.onready方法才可以返回對象使用從function類繼承而來的原型上的方法 _$.onrReady(function () {//$是綁定在Windows上的 $('').AddEvent('click',function () { alert('click') }) })})()

上述是將$綁定到window上的操作,如果我們想將$綁定到一個指定對象上我們可以這通過改變上述的第二步和第五步如下,

/** * Created by 與你在巔峰相會 on 2017/10/12. *///第三步,為了類(Function)能擴展函數,我們定義一個它的靜態函數Function.prototype.method=function (name,fn) {//(函數名稱,函數本身) this.prototype[name]=fn; return this;//鏈式調用關鍵};//這個函數的意思:為function對象增加函數,會用鏈式調用,鏈式調用有兩個參數name,和fn(function () { // 第一步,下劃線:表示私有變量的寫法 function _$(els) { };//有參數的空對象 //第二步,準備方法 在_$上定義一個onrReady方法 _$.onReady=function (obj,fn) {//obj傳進來的對象 if(obj){ //按要求把對象(_$)注冊到window對象上 //對外開放的接口 obj.$=function () {return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } }else { //按要求把對象(_$)注冊到window對象上//對外開放的接口 window.$=function () {return new _$(arguments);//傳遞相應的方法調用參數 返回一可以使用function類原型上的方法的對象($('')=_$(參數)) } } fn(); } //第四步,擴展類的相應方法 鏈式的對象增加jquery庫提供的操作函數_$.method('AddEvent',function (type,fn) {//_$本身是一個function要繼承原型鏈上的東西,可以直接使用method方法 fn();}).method('getEvent',function (fn,e) { fn();}); //第五步,開始使用,需要調用_$.onready方法才可以返回對象使用從function類繼承而來的原型上的方法 var com={}; _$.onReady(com,function () {//$是綁定在Windows上的 com.$('').AddEvent('click',function () { alert('click') }) })})()

自己畫一個圖簡單理解一下上面的過程及思路:

JavaScript鏈式調用原理與實現方法詳解

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
美女久久一区| 黄色亚洲大片免费在线观看| 一区免费视频| 久久国产66| 日韩av影院| 精品亚洲成人| 日韩成人免费| 女主播福利一区| 视频精品一区| 国产精品亚洲欧美一级在线| 精品国产乱码久久久| 亚洲天堂1区| 免费久久99精品国产| 国产欧美日韩| 久久一区二区中文字幕| 亚洲精品乱码| 精品久久免费| 久久成人一区| 老司机精品视频网| 欧美精品一区二区三区精品| 亚洲精品伦理| 麻豆视频观看网址久久| 久久中文字幕av一区二区不卡| 国产免费成人| 久久久久亚洲精品中文字幕| 好吊日精品视频| 欧美一区在线观看视频| 国产一区二区三区黄网站| 亚洲精品电影| 欧美激情一区| 国产精品毛片| 成人在线免费观看网站| 男女男精品视频网| 亚洲人成在线网站| 日韩区欧美区| 免费观看久久av| 国产精品久久久久久久久久妞妞 | 六月婷婷一区| 麻豆国产欧美日韩综合精品二区| 一级欧洲+日本+国产| 国产精品巨作av| 视频精品一区二区| 肉色欧美久久久久久久免费看| 日本不卡高清视频| 亚洲精品一区二区妖精| 精品国产一区二| 亚洲精品精选| 久久理论电影| 精品国产亚洲一区二区三区在线| 首页亚洲欧美制服丝腿| 精品中文在线| 午夜性色一区二区三区免费视频| www成人在线视频| 精品黄色一级片| 日精品一区二区三区| 日韩午夜高潮| 99成人在线视频| 色综合五月天| 久久97久久97精品免视看秋霞| 亚洲精品进入| 爽爽淫人综合网网站| 久久精品一区二区不卡| 成午夜精品一区二区三区软件| 91精品麻豆| 色狠狠一区二区三区| 欧美在线亚洲| 久久青草久久| 日韩av有码| 高清日韩中文字幕| 精品三级av在线导航| 国产麻豆一区二区三区精品视频| 热久久国产精品| 99国产精品99久久久久久粉嫩| 99国产精品一区二区| 久久久精品区| 欧美黄色一区二区| 国产精品久久久久毛片大屁完整版| 亚洲精品少妇| 亚洲精品字幕| 日本亚洲视频在线| 亚洲欧美不卡| 午夜在线视频一区二区区别| 欧美日韩国产高清| 日韩午夜一区| 蜜桃久久av| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美精品九九| 在线亚洲精品| 国产精品毛片| 丝袜亚洲精品中文字幕一区| 影院欧美亚洲| 国产精品日韩久久久| 久久国产精品99国产| 亚洲综合不卡| 人人精品人人爱| 只有精品亚洲| 亚洲精品激情| 欧美精品影院| 亚洲精品动态| 国产亚洲在线观看| 91精品国产91久久久久久黑人| 国产精品1区| 国产在线一区不卡| 国产高潮在线| 欧美成a人免费观看久久| 激情综合网址| 日韩网站在线| 日韩欧美高清一区二区三区| 日本91福利区| 国产精品2023| 岛国精品一区| 中文字幕在线视频久| 欧美中文字幕一区二区| 亚洲欧洲一区| 日韩福利视频网| 亚洲国产不卡| 亚久久调教视频| 国模大尺度视频一区二区| 成人在线视频免费看| 国产欧美自拍一区| 成人精品中文字幕| 婷婷亚洲五月| 精品一区二区三区中文字幕在线| 国产精品美女久久久| 久久激情av| 国产成人77亚洲精品www| 免费成人性网站| 久久精品国产亚洲一区二区三区| 欧美天堂视频| 免费在线看一区| 国产精品一区二区精品视频观看| 久久亚洲一区| 在线综合欧美| 亚洲欧美久久精品| 黑丝美女一区二区| 麻豆精品蜜桃| 日韩中文影院| 91成人精品观看| 精品久久久网| 亚洲激情精品| 热久久免费视频| 久久精品国产福利| 久久高清免费观看| 国产精品国产一区| 丝袜亚洲另类欧美| 91麻豆国产自产在线观看亚洲| 91久久亚洲| 精品国产aⅴ| 美女尤物久久精品| 日韩综合一区| 7m精品国产导航在线| 欧美va天堂| 美女视频黄 久久| 国产精品日韩久久久| 日韩av片子| 91嫩草精品| 久久国产免费| 国产激情综合| 中文字幕成人| 亚洲欧洲另类| 91看片一区| 美女在线视频一区| 日本不卡在线视频| 国产视频一区免费看| 日韩久久视频| 国产精品日韩精品中文字幕| 亚洲一卡久久| 视频福利一区| 成人在线视频中文字幕| 亚洲精品欧美| 91精品久久久久久久久久不卡| 国产日韩欧美三级| 亚洲伊人精品酒店| 欧美久久精品一级c片| 日韩国产欧美| 丁香婷婷久久| 久久不卡日韩美女| 午夜久久av | 国产一区二区精品| 亚洲免费福利| 国产精品久久| 日本一区二区三区中文字幕| 六月天综合网| 9色精品在线| 午夜久久tv| 激情欧美亚洲| 色婷婷狠狠五月综合天色拍| 麻豆视频一区二区| 国产精品午夜av| 青青草伊人久久| 日韩国产在线观看| 亚洲人成高清| 在线观看视频免费一区二区三区| 亚洲激精日韩激精欧美精品| 91精品推荐| 久久久久久自在自线| 国产精品va视频| 国产欧美日韩在线一区二区| 国产调教精品| 国产欧美日韩一级|