国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript專題系列20篇正式完結!

sixleaves / 1222人閱讀

摘要:寫在前面專題系列是我寫的第二個系列,第一個系列是深入系列。專題系列自月日發布第一篇文章,到月日發布最后一篇,感謝各位朋友的收藏點贊,鼓勵指正。

寫在前面

JavaScript 專題系列是我寫的第二個系列,第一個系列是 JavaScript 深入系列。

JavaScript 專題系列共計 20 篇,主要研究日常開發中一些功能點的實現,比如防抖、節流、去重、類型判斷、拷貝、最值、扁平、柯里、遞歸、亂序、排序等,特點是研(chao)究(xi) underscore 和 jQuery 的實現方式。

JavaScript 專題系列自 6 月 2 日發布第一篇文章,到 10 月 20 日發布最后一篇,感謝各位朋友的收藏、點贊,鼓勵、指正。

20 篇下來,我們已經跟著 underscore 寫了 debounce、throttle、unique、isElement、flatten、findIndex、findLastIndex、sortedIndex、indexOf、lastIndexOf、eq、partial、compose、memorize 共 14 個功能函數,跟著 jQuery 寫了 type、isArray、isFunction、isPlainObject、isWindow、isArrayLike、extend、each 共 8 個功能函數,自己實現了 shallowCopy、deepCopy、curry、shuffle 共 4 個功能函數,加起來共有 26 個功能函數,除此之外,最后一篇還研究了 V8 的排序源碼,真心希望讀者能從這個系列中收獲頗豐。

順便宣傳一下該博客的 Github 倉庫:https://github.com/mqyqingfeng/Blog,歡迎 star,鼓勵一下作者。

而此篇,作為專題系列的總結篇,除了匯總各篇文章,作為目錄篇之外,還希望跟大家聊聊,我為什么要寫這個系列?

我為什么寫專題系列?

如果說深入系列是為了了解 JavaScript 這門語言本身,專題系列就是為了用 JavaScript 具體實現一些功能,我希望它抽離于實踐,無關乎 DOM、BOM,能對大家有所幫助,一想到這些,映入腦海的竟是那些年做過的前端面試題……

是的,回顧整個系列,你會發現,防抖、節流、去重、深淺拷貝、數組扁平化、亂序、柯里化等等不都是面試的經典嗎?我還記得曾經為了準備面試,死記硬背了一個去重的函數,卻從來沒有研究過其他去重的方法,也從來沒有想過它們之前的區別,防抖和節流更是傻傻分不清楚,深淺拷貝反正有 jQuery 的 extend 呢,數組扁平化,我也就有一個遞歸的思路,具體怎么實現我還真是不清楚,亂序我就沒有思路了……哎,都是一知半解或是只是有所耳聞。

想著想著,便不知不覺寫下了很多待研究的課題,研究的方法也隨之浮現,那就是研究 underscore 以及 jQuery 的實現方式,曾經它們看起來很是神秘,也知道閱讀起來并非難事,可還是想一探究竟。

然而研究的過程確實是十分的艱難,因為要做到看懂源碼,理解實現的原理,然而,一段源碼的實現往往會牽涉到多個地方,結果為了看懂某一個函數的具體實現,還要一連串的看多個函數,在理解源碼的過程中,也會有很多的疑惑,我會告訴自己去理解每一個產生疑惑的地方,這句話說起來簡單,做起來很難,我來舉個例子吧,在數組亂序中,有一個方法是:

arr.sort(function(){
    return Math.random() - 0.5;
});

然而,這個方法的實現是有問題的,它并不能做到真正的亂序。很多文章中,只是用 demo 驗證了這種方法有問題,卻從來沒有說過這個方法究竟哪里有問題,然而我就是對此感到非常疑惑,因為我覺得這個方法很不錯呀,思路巧妙,初見時,還有點小驚艷呢……可是為什么會有問題呢?我百思不得其解,搜了很多文章,也無果,最終,為了解決這個困惑,去看了 v8 的 sort 源碼,然而這段源碼也并不是很容易看的,資料少之又少,先要理解插入排序,快速排序,再去理解 v8 做的諸多優化,結果為了解決這個疑惑,看完了 v8 的 sort 源碼,理解了 sort 的原理后,以數組 [1, 2, 3] 為例,細細分析這種亂序方法在 v8 下具體的排序過程,最后算出來 [1, 2, 3] 亂序后的 6 種結果的概率分別是多少,結果 3 還在原位置的概率有 50%! 到此,才算是心滿意足的解決了這個困惑。

關于這個困惑的具體內容,可以查看該系列的第 19 篇文章。

除此之外,所有的函數我都會自己實現一遍,然而即便看懂了原理,實現也并非能一蹴而就,畢竟如果是你寫,怎么能一開始就想得如此完善呢?所以我都是從一個簡單的寫法開始,向著 underscore 和 jquery 的最終實現方式,一個功能一個功能的迭代實現,你看這個系列很多的文章,都會跟大家講解如何從零實現,一版一版的代碼其實就是迭代實現時的記錄。

感嘆一下,寫文章不容易呀~

全目錄

JavaScript專題之跟著underscore學防抖

JavaScript專題之跟著underscore學節流

JavaScript專題之數組去重

JavaScript專題之類型判斷(上)

JavaScript專題之類型判斷(下)

JavaScript專題之深淺拷貝

JavaScript專題之從零實現jQuery的extend

JavaScript專題之如何求數組的最大值和最小值

JavaScript專題之數組扁平化

JavaScript專題之學underscore在數組中查找指定元素

JavaScript專題之jQuery通用遍歷方法each的實現

JavaScript專題之如何判斷兩個對象相等

JavaScript專題之函數柯里化

JavaScript專題之偏函數

JavaScript專題之惰性函數

JavaScript專題之函數組合

JavaScript專題之函數記憶

JavaScript專題之遞歸

JavaScript專題之亂序

JavaScript專題之解讀v8排序源碼

致歉

有些讀者給我的文章留言,或感謝,或討論,或指正,因為各種各樣的原因,沒能回復或及時回復,對此致以歉意。

下期預告

在我 Github 博客倉庫的描述中,說到我預計寫四個系列:JavaScript深入系列、JavaScript專題系列、ES6系列、React系列。專題系列完結,本來應該是寫 ES6 系列,可是有一個朋友跟我說,寫了這么多函數,可是該如何組織這些函數,形成自己的工具函數庫呢?

對呀,既然都寫了這么多工具函數,為什么不再進一步,將它們以某種方式組織起來呢?

我首先想到的便是借鑒 underscore,underscore 是如何組織代碼的?又是如何實現鏈式調用的?又是如何實現拓展的?有很多值得研究的地方,所以我決定,在 ES6 系列之前,再進一步,寫一個 underscore 系列,旨在幫助大家寫出一個自己的 “underscore”。

感謝大家的閱讀和支持,我是冴羽,underscore 系列再見啦![]~( ̄▽ ̄)~**

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89310.html

相關文章

  • JavaScript深入系列15正式完結

    摘要:寫在前面深入系列共計篇已經正式完結,這是一個旨在幫助大家,其實也是幫助自己捋順底層知識的系列。深入系列自月日發布第一篇文章,到月日發布最后一篇,感謝各位朋友的收藏點贊,鼓勵指正。 寫在前面 JavaScript 深入系列共計 15 篇已經正式完結,這是一個旨在幫助大家,其實也是幫助自己捋順 JavaScript 底層知識的系列。重點講解了如原型、作用域、執行上下文、變量對象、this、...

    fxp 評論0 收藏0
  • JavaScript專題系列文章

    摘要:專題系列共計篇,主要研究日常開發中一些功能點的實現,比如防抖節流去重類型判斷拷貝最值扁平柯里遞歸亂序排序等,特點是研究專題之函數組合專題系列第十六篇,講解函數組合,并且使用柯里化和函數組合實現模式需求我們需要寫一個函數,輸入,返回。 JavaScript 專題之從零實現 jQuery 的 extend JavaScritp 專題系列第七篇,講解如何從零實現一個 jQuery 的 ext...

    Maxiye 評論0 收藏0
  • 深入理解JavaScript

    摘要:深入之繼承的多種方式和優缺點深入系列第十五篇,講解各種繼承方式和優缺點。對于解釋型語言例如來說,通過詞法分析語法分析語法樹,就可以開始解釋執行了。 JavaScript深入之繼承的多種方式和優缺點 JavaScript深入系列第十五篇,講解JavaScript各種繼承方式和優缺點。 寫在前面 本文講解JavaScript各種繼承方式和優缺點。 但是注意: 這篇文章更像是筆記,哎,再讓我...

    myeveryheart 評論0 收藏0
  • underscore 的源碼該如何閱讀?

    摘要:所以它與其他系列的文章并不沖突,完全可以在閱讀完這個系列后,再跟著其他系列的文章接著學習。如何閱讀我在寫系列的時候,被問的最多的問題就是該怎么閱讀源碼我想簡單聊一下自己的思路。感謝大家的閱讀和支持,我是冴羽,下個系列再見啦 前言 別名:《underscore 系列 8 篇正式完結!》 介紹 underscore 系列是我寫的第三個系列,前兩個系列分別是 JavaScript 深入系列、...

    weknow619 評論0 收藏0
  • JavasScript重難點知識

    摘要:忍者級別的函數操作對于什么是匿名函數,這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數是一個很重要且具有邏輯性的特性。通常,匿名函數的使用情況是創建一個供以后使用的函數。 JS 中的遞歸 遞歸, 遞歸基礎, 斐波那契數列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執行機制 本文的目的就是要保證你徹底弄懂javascript的執行機制,如果...

    forsigner 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<