最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript DSL 流暢接口(使用鏈?zhǔn)秸{(diào)用)實(shí)例

 更新時(shí)間:2015年03月15日 12:45:05   投稿:junjie  
這篇文章主要介紹了JavaScript DSL 流暢接口(使用鏈?zhǔn)秸{(diào)用)實(shí)例,本文講解了DSL 流暢接口、DSL 表達(dá)式生成器等內(nèi)容,需要的朋友可以參考下

認(rèn)真研究了一會(huì)DSL,發(fā)現(xiàn)了這么幾件有趣的事,JavaScript用得最多的一個(gè)東西怕是鏈?zhǔn)秸{(diào)用 (方法鏈,即Method Chaining)。 有意思的是Martin Flower指出:

復(fù)制代碼 代碼如下:

 I've also noticed a common misconception - many people seem to equate fluent interfaces with Method Chaining. Certainly chaining is a common technique to use with fluent interfaces, but true fluency is much more than that.

很多人將鏈?zhǔn)秸{(diào)用等同于流暢接口。然而鏈?zhǔn)秸{(diào)用是流暢接口的一種常用方法,真實(shí)的流暢接口不止這么一點(diǎn)點(diǎn)。

DSL 流暢接口

流暢接口的初衷是構(gòu)建可讀的API,畢竟代碼是寫(xiě)給人看的。

類似的,簡(jiǎn)單的看一下早先我們是通過(guò)方法級(jí)聯(lián)來(lái)操作DOM

復(fù)制代碼 代碼如下:

var btn = document.createElement("BUTTON");        // Create a <button> element
var t = document.createTextNode("CLICK ME");       // Create a text node
btn.appendChild(t);                                // Append the text to <button>
document.body.appendChild(btn);                    // Append <button> to <body>

而用jQuery寫(xiě)的話,便是這樣子
復(fù)制代碼 代碼如下:

$('<span>').append("CLICK ME");

等等

于是回我們便可以創(chuàng)建一個(gè)簡(jiǎn)單的示例來(lái)展示這個(gè)最簡(jiǎn)單的DSL

復(fù)制代碼 代碼如下:

Func = (function() {
    this.add = function(){
        console.log('1');
        return this;
    };
    this.result = function(){
        console.log('2');
        return this;
    };
    return this;
});

var func = new Func();
func.add().result();


然而這看上去像是表達(dá)式生成器。

DSL 表達(dá)式生成器

 表達(dá)式生成器對(duì)象提供一組連貫接口,之后將連貫接口調(diào)用轉(zhuǎn)換為對(duì)底層命令-查詢API的調(diào)用。

這樣的API,我們可以在一些關(guān)于數(shù)據(jù)庫(kù)的API中看到:

復(fù)制代碼 代碼如下:

var query =
  SQL('select name, desc from widgets')
   .WHERE('price < ', $(params.max_price), AND,
          'clearance = ', $(params.clearance))
   .ORDERBY('name asc');

鏈?zhǔn)秸{(diào)用有一個(gè)問(wèn)題就是收尾,同上的代碼里面我們沒(méi)有收尾,這讓人很迷惑。。加上一個(gè)query和end似乎是一個(gè)不錯(cuò)的結(jié)果。

其他

方法級(jí)聯(lián)
表示如下:

復(fù)制代碼 代碼如下:

a.b();
a.c();

相關(guān)文章

  • GitHub上77.9K的Axios項(xiàng)目有哪些值得借鑒的地方詳析

    GitHub上77.9K的Axios項(xiàng)目有哪些值得借鑒的地方詳析

    提到axios,相信大家應(yīng)該都不會(huì)陌生,這篇文章主要給大家介紹了關(guān)于GitHub上77.9K的Axios項(xiàng)目有哪些值得借鑒的地方,需要的朋友可以參考下
    2021-06-06
  • 提高團(tuán)隊(duì)代碼質(zhì)量利器ESLint及Prettier詳解

    提高團(tuán)隊(duì)代碼質(zhì)量利器ESLint及Prettier詳解

    這篇文章主要為大家介紹了提高團(tuán)隊(duì)代碼質(zhì)量利器ESLint及Prettier使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 實(shí)例分析瀏覽器中“JavaScript解析器”的工作原理

    實(shí)例分析瀏覽器中“JavaScript解析器”的工作原理

    本文主要對(duì)javascript解析器的工作原理進(jìn)行實(shí)例分析,具有很好的參考價(jià)值,下面就跟小編一起來(lái)看下吧
    2016-12-12
  • Less 安裝及基本用法

    Less 安裝及基本用法

    這篇文章主要介紹了Less 安裝及基本用法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • JavaScript實(shí)現(xiàn)輪播圖方法(邏輯清晰一看就懂)

    JavaScript實(shí)現(xiàn)輪播圖方法(邏輯清晰一看就懂)

    這篇文章主要給大家介紹了關(guān)于JavaScript實(shí)現(xiàn)輪播圖方法的相關(guān)資料,JS輪播圖的實(shí)現(xiàn)核心是使用JavaScript來(lái)控制圖片的切換和顯示,配合HTML和CSS完成布局和樣式設(shè)置,文中介紹的方法邏輯清晰一看就懂,需要的朋友可以參考下
    2023-12-12
  • javascript中caller和callee詳解

    javascript中caller和callee詳解

    有些小伙伴可能會(huì)問(wèn)caller,callee 是什么?在javascript 中有什么樣的作用?那么本篇會(huì)對(duì)于此做一些基本介紹。希望能夠?qū)Υ蠹依斫鈐avascript中的callee與caller有所幫助。
    2015-08-08
  • layui 點(diǎn)擊重置按鈕, select 并沒(méi)有被重置的解決方法

    layui 點(diǎn)擊重置按鈕, select 并沒(méi)有被重置的解決方法

    今天小編就為大家分享一篇layui 點(diǎn)擊重置按鈕, select 并沒(méi)有被重置的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-09-09
  • JavaScript日期庫(kù)date-fn.js使用方法解析

    JavaScript日期庫(kù)date-fn.js使用方法解析

    這篇文章主要介紹了JavaScript日期庫(kù)date-fn.js使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 推薦三款不錯(cuò)的圖片壓縮上傳插件(webuploader、localResizeIMG4、LUploader)

    推薦三款不錯(cuò)的圖片壓縮上傳插件(webuploader、localResizeIMG4、LUploader)

    這篇文章主要為大家詳細(xì)介紹了三款不錯(cuò)的圖片壓縮上傳插件,webuploader、移動(dòng)端上傳插件localResizeIMG4以及LUploader)
    2017-04-04
  • JavaScript中重名的函數(shù)與對(duì)象示例詳析

    JavaScript中重名的函數(shù)與對(duì)象示例詳析

    最近同事問(wèn)了一個(gè)問(wèn)題,說(shuō)在js中如果函數(shù)與對(duì)象重名了會(huì)怎么樣?仔細(xì)詳細(xì)這個(gè)問(wèn)題值得討論一下,所以便有了這篇文章,這篇文章主要給大家介紹了關(guān)于JavaScript中重名的函數(shù)與對(duì)象的相關(guān)資料,需要的朋友可以參考借鑒,下面來(lái)一起看看吧啊。
    2017-09-09

最新評(píng)論

沅江市| 宜君县| 汝南县| 平遥县| 延寿县| 军事| 元氏县| 贵溪市| 马龙县| 东安县| 报价| 扶风县| 长泰县| 石河子市| 丰顺县| 无为县| 尚志市| 漳州市| 昌江| 邯郸县| 房山区| 元阳县| 泗水县| 淮南市| 左贡县| 鄂尔多斯市| 广德县| 西畴县| 额尔古纳市| 剑阁县| 九江市| 宣汉县| 巍山| 楚雄市| 津南区| 仪征市| 天峨县| 滨海县| 南乐县| 乌兰浩特市| 浠水县|