最近中文字幕高清中文字幕无,亚洲欧美高清一区二区三区,一本色道无码道dvd在线观看 ,一个人看的www免费高清中文字幕

章節(jié)
問(wèn)答
課簽
筆記
評(píng)論
占位
占位

方法鏈?zhǔn)秸{(diào)用的實(shí)現(xiàn)

      jQuery的核心理念是Write less,Do more(寫的更少,做的更多),那么鏈?zhǔn)椒椒ǖ脑O(shè)計(jì)與這個(gè)核心理念不謀而合。那么從深層次考慮這種設(shè)計(jì)其實(shí)就是一種Internal DSL。

DSL是指Domain Specific Language,也就是用于描述和解決特定領(lǐng)域問(wèn)題的語(yǔ)言。

我們看一段鏈?zhǔn)酱a:

$('input[type="button"]')
    .eq(0).click(function() {
        alert('點(diǎn)擊我!');
}).end().eq(1)
.click(function() {
    $('input[type="button"]:eq(0)').trigger('click');
}).end().eq(2)
.toggle(function() {
    $('.aa').hide('slow');
}, function() {
    $('.aa').show('slow');
});

看這個(gè)代碼的結(jié)構(gòu),我們或多或少都能猜到其含義:

  ?  找出type類型為button的input元素

  ?  找到第一個(gè)按鈕,并綁定click事件處理函數(shù)

  ?  返回所有按鈕,再找到第二個(gè)

  ?  為第二個(gè)按鈕綁定click事件處理函數(shù)

  ?  為第三個(gè)按鈕綁定toggle事件處理函數(shù)

      那么可見jQuery的Internal DSL形式帶來(lái)的好處——編寫代碼時(shí),讓代碼更貼近作者的思維模式;閱讀代碼時(shí),讓讀者更容易理解代碼的含義;應(yīng)用DSL可以有效的提高系統(tǒng)的可維護(hù)性(縮小了實(shí)現(xiàn)模型和領(lǐng)域模型的距離,提高了實(shí)現(xiàn)的可讀性)和靈活性,并且提供開發(fā)的效率。

jQuery的這種管道風(fēng)格的DSL鏈?zhǔn)酱a,總的來(lái)說(shuō):

  ?  節(jié)約JS代碼;

  ?  所返回的都是同一個(gè)對(duì)象,可以提高代碼的效率。

通過(guò)簡(jiǎn)單擴(kuò)展原型方法并通過(guò)return this的形式來(lái)實(shí)現(xiàn)跨瀏覽器的鏈?zhǔn)秸{(diào)用。利用JS下的簡(jiǎn)單工廠方法模式,來(lái)將所有對(duì)于同一個(gè)DOM對(duì)象的操作指定同一個(gè)實(shí)例。

這個(gè)原理就超簡(jiǎn)單了,如下代碼:

aQuery().init().name()

分解:

a = aQuery();
a.init()
a.name()

把代碼分解一下,很明顯實(shí)現(xiàn)鏈?zhǔn)降幕緱l件就是要實(shí)例對(duì)象先創(chuàng)建好,調(diào)用自己的方法。

aQuery.prototype = {
    init: function() {
        return this;
    },
    name: function() {
        return this
    }
}

      所以我們?nèi)绻枰準(zhǔn)降奶幚?,只需要在方法?nèi)部方法當(dāng)前的這個(gè)實(shí)例對(duì)象this就可以了,因?yàn)榉祷禺?dāng)前實(shí)例的this,從而又可以訪問(wèn)自己的原型了,這樣的就節(jié)省代碼量,提高代碼的效率,代碼看起來(lái)更優(yōu)雅。但是這種方法有一個(gè)問(wèn)題是:所有對(duì)象的方法返回的都是對(duì)象本身,也就是說(shuō)沒(méi)有返回值,所以這種方法不一定在任何環(huán)境下都適合。

      雖然Javascript是無(wú)阻塞語(yǔ)言,但是他并不是沒(méi)阻塞,而是不能阻塞,所以他需要通過(guò)事件來(lái)驅(qū)動(dòng),異步來(lái)完成一些本需要阻塞進(jìn)程的操作,這樣處理只是同步鏈?zhǔn)?/span>,除了同步鏈?zhǔn)竭€有異步鏈?zhǔn)?/span>,異步鏈?zhǔn)絡(luò)Query從1.5開始就引入了Promise,jQuery.Deferred后期再討論。

 

任務(wù)

?不會(huì)了怎么辦
||

提問(wèn)題

寫筆記

公開筆記
提交
||

請(qǐng)驗(yàn)證,完成請(qǐng)求

由于請(qǐng)求次數(shù)過(guò)多,請(qǐng)先驗(yàn)證,完成再次請(qǐng)求

加群二維碼

打開微信掃碼自動(dòng)綁定

您還未綁定服務(wù)號(hào)

綁定后可得到

  • · 粉絲專屬優(yōu)惠福利
  • · 大咖直播交流干貨
  • · 課程更新,問(wèn)題答復(fù)提醒
  • · 賬號(hào)支付安全提醒

收藏課程后,能更快找到我哦~

使用 Ctrl+D 可將課程添加到書簽

邀請(qǐng)您關(guān)注公眾號(hào)
關(guān)注后,及時(shí)獲悉本課程動(dòng)態(tài)

舉報(bào)

0/150
提交
取消
全部 精華 我要發(fā)布
全部 我要發(fā)布
最熱 最新
只看我的

手記推薦

更多

本次提問(wèn)將花費(fèi)2個(gè)積分

你的積分不足,無(wú)法發(fā)表

為什么扣積分?

本次提問(wèn)將花費(fèi)2個(gè)積分

繼續(xù)發(fā)表請(qǐng)點(diǎn)擊 "確定"

為什么扣積分?