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

首頁 > 編程 > JavaScript > 正文

對js中回調函數的一些看法

2019-11-20 09:07:53
字體:
來源:轉載
供稿:網友

最近在忙公司android的項目,所以也就很少抽時間來寫些東西了。剛閑下來,我就翻了翻之前看的東西。做了android之后更加感覺到手機端開發的重要性,現在做native App  和Web App是主流,也就是說現在各種基于瀏覽器的web app框架也會越來越火爆了,做js的也越來越有前途。我也決定從后端開發漸漸向前端開發和手機端開發靠攏,廢話不說了,我們來切入正題“js的回調函數”相關的東西。

說起回調函數,好多人雖然知道意思,但是還是一知半解。至于怎么用,還是有點糊涂。網上的一些相關的也沒有詳細的說一下是怎么回事,說的比較片面。下面我只是說說個人的一點理解,大牛勿噴。我們來看一下一個粗略的一個定義“函數a有一個參數,這個參數是個函數b,當函數a執行完以后執行函數b。那么這個過程就叫回調?!?,這句話的意思是函數b以一個參數的形式傳入函數a并執行,順序是先執行a ,然后執行參數b,b就是所謂的回調函數。我們先來看下面的例子。

function a(callback){   alert('a');   callback.call(this);//或者是 callback(), callback.apply(this),看個人喜好  }  function b(){    alert('b');  }  //調用  a(b);

這樣的結果是先彈出 'a',再彈出‘b'。這樣估計會有人問了“寫這樣的代碼有什么意思呢?好像沒太大的作用呢!”

是的,其實我也覺得這樣寫沒啥意思,“如果調用一個函數就直接在函數里面調用它不就行了”。我這只是給大家寫個小例子,做初步的理解。真正寫代碼的過程中很少用這樣無參數的,因為在大部分場景中,我們要傳遞參數。來個帶參數的:

function c(callback){   alert('c');   callback.call(this,'d');  }  //調用c(function(e){  alert(e);});

這個調用看起來是不是似曾相識,這里e參數被賦值為'd',我們只是簡單的賦值為字符竄,其實也可以賦值為對象。Jquery里面是不是也有個e參數,下面我們就來講講
Jquery里面的e參數是如何被回調賦值的。

Jquery框架我想大家不陌生了,出來了好久,開發的時候都在用,比較簡單,api網上搜起來很方便,上手快。在Jquery框架下,我們有時候要獲取事件中的一些參數,比如我要獲取當前點擊的坐標,點擊的元素對象。這個需求在Jquery里面好辦  :

 

$("#id").bind('click',function(e){//e.pageX ,e.pageY ,e.target.....各種數據 });

 用起來倒是挺方便,其實這個e參數的賦值也是通過回調函數來實現的,這個參數是用回調參數給它賦予了一個對象值,仔細研究過JJquery源碼的朋友應該發現了這一點。

還有Ajax里面   $.get('',{},function(data){})    data這個參數也是同樣的原理。

我們來看看Jquery事件對象里面是怎么應用回調函數的。

為了方便,我簡單的寫了一下$相關的一些實現,之前寫過“小談Jquery”里面有比較接近框架實現的方法,我下面只是寫一個簡易的選擇器。

<div id="container"  style="width:200px;height:200px;background-Color:green;"></div><script>   var  _$=function (id)        {            this.element= document.getElementById(id);         }    _$.prototype={      bind:function(evt,callback)      {        var  that=this;        if(document.addEventListener)        {          this.element.addEventListener(evt, function(e){            callback.call(this,that.standadize(e));          } ,false);        }        else if(document.attachEvent)        {          this.element.attachEvent('on'+evt,function(e){            callback.call(this,that.standadize(e));          });        }        else          this.element['on'+evt]=function(e){            callback.call(this,that.standadize(e));          };      },      standadize:function(e){         var evt=e||window.event;         var pageX,pageY,layerX,layerY;         //pageX 橫坐標 pageY縱坐標  layerX點擊處位于元素的橫坐標  layerY點擊處位于元素的縱坐標         if(evt.pageX)         {           pageX=evt.pageX;           pageY=evt.pageY;         }         else         {          pageX=document.body.scrollLeft+evt.clientX-document.body.clientLeft;          pageY=document.body.scrollTop+evt.clientY-document.body.clientLTop;         }         if(evt.layerX)         {           layerX=evt.layerX;           layerY=evt.layerY;         }         else         {           layerX=evt.offsetX;           layerXY=evt.offsetY;         }         return {          pageX:pageX,          pageY:pageY,          layerX:layerX,          layerY:layerY         }      }    }    window.$=function(id)    {     return new _$(id);    }    $('container').bind('click',function(e){      alert(e.pageX);    });    $('container1').bind('click',function(e){       alert(e.pageX);    });</script>

這段代碼我們主要看standadize函數的實現,兼容性的代碼,就不多說了,返回的是一個對象

return {pageX:pageX,pageY:pageY,layerX:layerX,layerY:layerY}

然后再看bind函數里面的代碼    callback.call(this,that.standadize(e)),這段代碼其實就是給e參數賦值了,是用callback回調實現的。

callback 函數被調用的時候傳入的是匿名函數

function(e){    }

而callback.call(this,that.standadize(e))相當于是執行了這么一段代碼 

 

(function(e){ })(standadize(e))

 這也是Jquery用回調函數比較經典的地方,e參數就是這么被賦值的,說了這些你們也大概有個了解了,以及怎么使用了。

回調在各種框架中應用的比較多,有時候自己寫一些東西的時候也可以根據實際情況用用看。

以上這篇對js中回調函數的一些看法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品久久久久久久久不口人| 中文字幕自拍vr一区二区三区| 黄网动漫久久久| 国产69精品久久久久99| 亚洲一区二区黄| 色综久久综合桃花网| 91精品国产91久久久久久吃药| 久久精视频免费在线久久完整在线看| 一本久久综合亚洲鲁鲁| 一区二区在线视频播放| www.国产精品一二区| 日韩女优人人人人射在线视频| 一区二区三区视频在线| 欧美性猛交xxxx乱大交蜜桃| 亚洲另类图片色| 欧美日韩在线影院| 亚洲福利在线看| 亚洲加勒比久久88色综合| 国产美女高潮久久白浆| 日韩av手机在线看| 国产精品福利在线观看网址| 欧美日韩国产一区二区| 国产精品视频一区国模私拍| 久久综合伊人77777蜜臀| 久久av中文字幕| 精品中文字幕久久久久久| 91精品国产高清自在线看超| 国产一区深夜福利| 亚洲福利视频二区| 欧美精品成人91久久久久久久| 尤物九九久久国产精品的分类| 精品亚洲一区二区三区在线播放| 国产第一区电影| 亚洲免费影视第一页| 国产精品第2页| 欧美国产日本在线| 久久视频在线免费观看| 欧美一级片久久久久久久| 日韩在线欧美在线国产在线| 亚洲成人黄色在线观看| 亚洲精品色婷婷福利天堂| 日韩在线观看成人| 欧美亚洲日本黄色| 在线成人免费网站| 国产精品精品一区二区三区午夜版| 成人啪啪免费看| 热99精品只有里视频精品| 茄子视频成人在线| 亚洲第一精品自拍| 国产一区二区三区三区在线观看| 91在线视频免费| 在线丨暗呦小u女国产精品| 国产suv精品一区二区三区88区| 日韩免费在线免费观看| 欧美性xxxx极品高清hd直播| 国内精品美女av在线播放| 国产精品偷伦视频免费观看国产| 国产精品免费久久久| 欧美一性一乱一交一视频| 国产一区二中文字幕在线看| 国产mv免费观看入口亚洲| 精品无人区太爽高潮在线播放| 国产香蕉一区二区三区在线视频| 中文字幕一精品亚洲无线一区| 91沈先生在线观看| 国产综合香蕉五月婷在线| 成人av番号网| 成人免费淫片aa视频免费| 亚洲视频一区二区三区| 亚洲欧美一区二区三区四区| 成人性教育视频在线观看| 91av免费观看91av精品在线| 精品国内产的精品视频在线观看| 国产精品美女网站| 91色在线视频| 日韩在线中文字幕| 最近中文字幕日韩精品| 欧美激情精品久久久久| 自拍亚洲一区欧美另类| 亚洲第一中文字幕| 国产精品96久久久久久又黄又硬| 成人免费看吃奶视频网站| 青青a在线精品免费观看| 91po在线观看91精品国产性色| 另类图片亚洲另类| 插插插亚洲综合网| 亚洲国产天堂久久综合| 亚洲天堂成人在线| 在线不卡国产精品| 亚洲日本欧美中文幕| 欧美性极品xxxx娇小| 国产精品一区二区av影院萌芽| 国产高清视频一区三区| 最新国产精品拍自在线播放| 久久久久久国产| 亚洲精品理论电影| 欧美另类69精品久久久久9999| 国产综合香蕉五月婷在线| 亚洲成色777777女色窝| 亚洲精品白浆高清久久久久久| 欧美巨大黑人极品精男| 亚洲视频欧美视频| 国产精品极品美女在线观看免费| 久久影院资源网| 欧美精品videos| 久久人人97超碰精品888| 成人激情视频小说免费下载| 一个人看的www欧美| 精品无码久久久久久国产| 欧美性猛交xxxx久久久| 日韩亚洲综合在线| 国产自产女人91一区在线观看| 亚洲精品99久久久久| 日韩成人在线网站| 乱亲女秽乱长久久久| 免费99精品国产自在在线| 91黑丝高跟在线| 亚洲视频在线观看免费| 国产z一区二区三区| 欧美一级大片视频| 成人免费网视频| 国产免费一区二区三区在线能观看| 8050国产精品久久久久久| 一本色道久久88综合亚洲精品ⅰ| 亚洲一区中文字幕在线观看| 奇米四色中文综合久久| 自拍亚洲一区欧美另类| 亚洲激情自拍图| www.久久草.com| 国产精品精品视频一区二区三区| 国产精品视频在线观看| 欧美xxxwww| 91久久久国产精品| 欧美日韩亚洲一区二区三区| 亚洲一级黄色片| 最好看的2019的中文字幕视频| 亚洲精品国产欧美| 日韩视频精品在线| 久久久亚洲影院| 国产欧美一区二区三区四区| 97色在线观看| 亚洲精品美女在线观看播放| 国产精品福利观看| 原创国产精品91| 成人疯狂猛交xxx| 国产成人综合精品在线| 久久久极品av| 成人国产在线激情| 久久九九免费视频| 91最新国产视频| 国产精品入口免费视频一| 久久久中精品2020中文| 亚洲视频欧美视频| 中文字幕亚洲一区在线观看| 国产69精品99久久久久久宅男| 色婷婷综合成人| 国产精品欧美一区二区三区奶水| 欧美性猛交xxxx乱大交极品| 国产精品福利小视频| 91精品国产综合久久香蕉| 亚洲精品美女网站| 一区二区三区四区精品| 日韩欧美成人免费视频| 亚洲第一精品久久忘忧草社区|