亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

JavaScript專題系列20篇正式完結(jié)!

sixleaves / 1285人閱讀

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

寫在前面

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

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

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

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

順便宣傳一下該博客的 Github 倉(cāng)庫(kù):https://github.com/mqyqingfeng/Blog,歡迎 star,鼓勵(lì)一下作者。

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

我為什么寫專題系列?

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

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

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

然而研究的過程確實(shí)是十分的艱難,因?yàn)橐龅娇炊创a,理解實(shí)現(xiàn)的原理,然而,一段源碼的實(shí)現(xiàn)往往會(huì)牽涉到多個(gè)地方,結(jié)果為了看懂某一個(gè)函數(shù)的具體實(shí)現(xiàn),還要一連串的看多個(gè)函數(shù),在理解源碼的過程中,也會(huì)有很多的疑惑,我會(huì)告訴自己去理解每一個(gè)產(chǎn)生疑惑的地方,這句話說起來簡(jiǎn)單,做起來很難,我來舉個(gè)例子吧,在數(shù)組亂序中,有一個(gè)方法是:

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

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

關(guān)于這個(gè)困惑的具體內(nèi)容,可以查看該系列的第 19 篇文章。

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

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

全目錄

JavaScript專題之跟著underscore學(xué)防抖

JavaScript專題之跟著underscore學(xué)節(jié)流

JavaScript專題之?dāng)?shù)組去重

JavaScript專題之類型判斷(上)

JavaScript專題之類型判斷(下)

JavaScript專題之深淺拷貝

JavaScript專題之從零實(shí)現(xiàn)jQuery的extend

JavaScript專題之如何求數(shù)組的最大值和最小值

JavaScript專題之?dāng)?shù)組扁平化

JavaScript專題之學(xué)underscore在數(shù)組中查找指定元素

JavaScript專題之jQuery通用遍歷方法each的實(shí)現(xiàn)

JavaScript專題之如何判斷兩個(gè)對(duì)象相等

JavaScript專題之函數(shù)柯里化

JavaScript專題之偏函數(shù)

JavaScript專題之惰性函數(shù)

JavaScript專題之函數(shù)組合

JavaScript專題之函數(shù)記憶

JavaScript專題之遞歸

JavaScript專題之亂序

JavaScript專題之解讀v8排序源碼

致歉

有些讀者給我的文章留言,或感謝,或討論,或指正,因?yàn)楦鞣N各樣的原因,沒能回復(fù)或及時(shí)回復(fù),對(duì)此致以歉意。

下期預(yù)告

在我 Github 博客倉(cāng)庫(kù)的描述中,說到我預(yù)計(jì)寫四個(gè)系列:JavaScript深入系列、JavaScript專題系列、ES6系列、React系列。專題系列完結(jié),本來應(yīng)該是寫 ES6 系列,可是有一個(gè)朋友跟我說,寫了這么多函數(shù),可是該如何組織這些函數(shù),形成自己的工具函數(shù)庫(kù)呢?

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

我首先想到的便是借鑒 underscore,underscore 是如何組織代碼的?又是如何實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的?又是如何實(shí)現(xiàn)拓展的?有很多值得研究的地方,所以我決定,在 ES6 系列之前,再進(jìn)一步,寫一個(gè) underscore 系列,旨在幫助大家寫出一個(gè)自己的 “underscore”。

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

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/89310.html

相關(guān)文章

  • JavaScript深入系列15正式完結(jié)!

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

    fxp 評(píng)論0 收藏0
  • JavaScript專題系列文章

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

    Maxiye 評(píng)論0 收藏0
  • 深入理解JavaScript

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

    myeveryheart 評(píng)論0 收藏0
  • underscore 的源碼該如何閱讀?

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

    weknow619 評(píng)論0 收藏0
  • JavasScript重難點(diǎn)知識(shí)

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

    forsigner 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<