Blog icon indicating copy to clipboard operation
Blog copied to clipboard

JavaScript深入系列15篇正式完结!

Open mqyqingfeng opened this issue 7 years ago • 103 comments

写在前面

JavaScript 深入系列共计 15 篇已经正式完结,这是一个旨在帮助大家,其实也是帮助自己捋顺 JavaScript 底层知识的系列。重点讲解了如原型、作用域、执行上下文、变量对象、this、闭包、按值传递、call、apply、bind、new、继承等 JS 语言中的比较难懂的概念。

JavaScript 深入系列自 4 月 6 日发布第一篇文章,到 5 月 12 日发布最后一篇,感谢各位朋友的收藏、点赞,鼓励、指正。

顺便宣传一下该博客的 Github 仓库:https://github.com/mqyqingfeng/Blog,欢迎 star,鼓励一下作者。

而此篇,作为深入系列的总结篇,除了汇总各篇文章,作为目录篇之外,还希望跟大家聊聊,我为什么要写这个系列?

我为什么要写深入系列?

讲一个对我学技术的态度很有影响的一件事情。

曾经团队邀请过 Nodejs 领域一个非常著名的大神来分享,这里便不说是谁了。当知道是他后,简直是粉丝的心情。但是课讲得确实一般,也许是第一次讲,准备不是很充足吧,以至于我都觉得我能讲得比他好,但是有两次,让我觉得这是真正的大神。一次就是,当有同事问到今年有什么流行的前端框架吗?这些框架有怎样的适用场景?该如何抉择?我以为大神一定会回答当时正火的 React、以及小鲜肉 Vue 之类,然后老生常谈的比较一番,但是他回答道:“I dont't care!因为这些并不重要,真正重要的是底层,当你了解了底层,你就能很轻松的明白这些框架的原理,当你明白了原理,这些框架又有什么意思呢?”

虽然这段话因为过去太久,已经不记得确切的表述,但是给了我非常深刻的印象,自己一路学习过来,新的东西不停的冒出,但是学的再多感觉自己也只是学了一堆 API,如果仅仅是为了解决工作上的问题,或许已经足够,但是内心经常还会冒出一种不安定感,这种不安定感或许来自于对 JavaScript 未知部分的恐惧,或许来自于解决问题却不明所以的尴尬,或许来自于屡次学习语言难点却不得门道的失败……代码写的越久,这种感觉就越是鲜明。

当然了,大家也不要过分解读底层,各种计算机语言追究到底层都是编译原理之类,如果是有这方面的兴趣,固然可以,但是如果本质上还是为了解决上层问题,倒不必一定要深究到这个层面。用 JavaScript 了解这门语言本身的使用和原理,用 jQuery 看看 jQuery 的源码实现,用 React 技术栈,写写 React、Redux 简单的模拟实现,诸如此类,都是对底层的一种追求。

这样讲的话,底层这个词,更像是一个方向,一种学习的态度吧。

为了更加深入的了解 JavaScript 这门语言,我将之前记录的一些要学习的关键词作为课题进行研究,后来研究的差不多了,才决定动笔写下这个系列。尽管这个系列很多地方上依然不够所谓的“深入”,但就跟学习这些内容之前的我相比,已然多了份安定感,解决一些问题时也多了份得心应手,也希望大家能从这个系列中有所收获。

然而即便已经写了 15 篇,也只是漫长路途的开始,在我 Github 博客仓库的描述中有写到,我预计写 4 个系列,JavaScript 深入系列,JavaScript 专题系列,ES6 系列,React 系列,其实从“深入系列”到“专题系列”再到“ React 系列”,就是原来写着上层的我决定从语言层面开始一步一步走回上层的记录,而现在,我也只是迈出了第一步。

重新修订

在发布完最后一篇后,我花了一周时间,根据大家的评论和留言,并且参照阮一峰老师的《中文技术文档的写作规范》对所有的文章进行了一次修订。

说起来,改的最多的就是给英文单词两边加个空格……

此外,大家有疑问或指正或鼓励或感谢,尽管留言回复哈 []~( ̄▽ ̄)~* 。

全目录

  1. JavaScript深入之从原型到原型链
  2. JavaScript深入之词法作用域和动态作用域
  3. JavaScript深入之执行上下文栈
  4. JavaScript深入之变量对象
  5. JavaScript深入之作用域链
  6. JavaScript深入之从ECMAScript规范解读this
  7. JavaScript深入之执行上下文
  8. JavaScript深入之闭包
  9. JavaScript深入之参数按值传递
  10. JavaScript深入之call和apply的模拟实现
  11. JavaScript深入之bind的模拟实现
  12. JavaScript深入之new的模拟实现
  13. JavaScript深入之类数组对象与arguments
  14. JavaScript深入之创建对象的多种方式以及优缺点
  15. JavaScript深入之继承的多种方式以及优缺点

作者推荐

在我研究一些课题的时候,有时感觉自己深受启发,颇有醍醐灌顶的感觉,我也希望这个系列的读者能感受到跟作者当初学习这些内容时的一样兴奋的感觉,所以强烈推荐以下三篇:

  1. JavaScript深入之call和apply的模拟实现
  2. JavaScript深入之new的模拟实现
  3. JavaScript深入之从ECMAScript规范解读this

真的完结?

JavaScript 底层知识哪有这么一点呐!在不断学习的过程中,还会冒出一些新的课题适合划分到深入系列,如果是这样的话,就会偶尔发布一篇,当然了,如果冒出太多的话,不保证再来一个深入系列第二季。

下期预告

一周之内,会发布新的系列即 JavaScript 专题系列,这个系列主要研究日常开发中一些功能点的实现,比如防抖、节流、去重、拷贝、最值、扁平、柯里、递归、乱序、排序等,特点是抄袭 underscore 和 jQuery 的实现方式,而这次预计写二十篇左右。

感谢大家的阅读和支持,我是冴羽,JavaScript 专题系列再见啦![]~( ̄▽ ̄)~**

mqyqingfeng avatar May 26 '17 02:05 mqyqingfeng

框架能够让我们跑的更快,但只有了解原生的JS才能让我们走的更远。

jawil avatar May 26 '17 02:05 jawil

@jawil 你怎么这么睿智!!!o( ̄▽ ̄)d o( ̄▽ ̄)d o( ̄▽ ̄)d

mqyqingfeng avatar May 26 '17 02:05 mqyqingfeng

@jawil 感谢你一路的关注、回复、讨论和建议!o(* ̄3 ̄)o

mqyqingfeng avatar May 26 '17 02:05 mqyqingfeng

偶然来到你的网站, 不太会js. 博客感觉写的很认真, 而且这个地方选的很精妙 赞

wuzehv avatar May 26 '17 11:05 wuzehv

写的很不错,正在学习~~~不过话说你咋又这么多时间来写这个啊,不上班么?

xumengzi avatar May 26 '17 12:05 xumengzi

当然上班啊,不过博主是公务员类程序员,10点上班5点下班,有的是时间😄@JarvenIV

jawil avatar May 26 '17 13:05 jawil

@wuzehv 感谢夸奖,这里一直都会有文章更新哈~(~ ̄▽ ̄)~

mqyqingfeng avatar May 27 '17 02:05 mqyqingfeng

@jawil 哎呀,这都被你发现了……

mqyqingfeng avatar May 27 '17 02:05 mqyqingfeng

@jawil @JarvenIV 公司不要求加班,只要按时完成项目就行,所以一般晚上会留在公司研究点内容,自己的时间,客观评价还是很充裕的

mqyqingfeng avatar May 27 '17 02:05 mqyqingfeng

恭喜结案 #

ghost avatar May 27 '17 02:05 ghost

建议作者把内容搬到wiki里面

igo9go avatar May 27 '17 02:05 igo9go

恭喜 贺电

eczn avatar May 27 '17 05:05 eczn

很好的文章,已star

rfw avatar May 27 '17 06:05 rfw

很期待博主的柯里化函数式编程。

Junimo avatar May 27 '17 07:05 Junimo

哼哼 天天偷懒,快去干活儿啦

evanzlj avatar May 27 '17 08:05 evanzlj

第一次见到把博客写到Issue里的,老铁666

zephyrzoom avatar May 27 '17 09:05 zephyrzoom

@spyhole 希望还能写个深入系列第二季~

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@igo9go 搬到 wiki 里还能大家留言讨论吗?

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@eczn 感谢来自二次元世界 eczn 发来的贺电~

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@dan-me 突然好想一篇文章一个仓库……哈哈~

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@Junimo 柯里化可不好写,因为要讲解 lodash 的 curry 函数的实现方式,我自己快被绕晕了……

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@evanzlj 哎呀呀,这是个效率问题~

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

@zephyrzoom 抱拳了,老铁

mqyqingfeng avatar May 27 '17 09:05 mqyqingfeng

好,这几天把这个看完~!!

jeyfang0110 avatar May 28 '17 02:05 jeyfang0110

@jeyfang123 哈哈,难得的假期不准备好好休息一下吗?φ(≧ω≦*)♪

mqyqingfeng avatar May 29 '17 08:05 mqyqingfeng

看了前几篇,看得出博主是非常用心写的!非常感谢您的分享,已Star~

AlfredYan avatar Jun 01 '17 01:06 AlfredYan

@AlfredYan 不用这么客气,看文章的时候,有疑问就留言跟大家讨论哈~

mqyqingfeng avatar Jun 01 '17 02:06 mqyqingfeng

感谢作者的分享,个人认为,学习一门语言一定要深入,这样基于这门语言的任何框架都不需要care了

UI-Animation-Chen avatar Jun 04 '17 02:06 UI-Animation-Chen

@UI-Animation-Chen 哈哈,读框架的源码也是学习的一个方法~

mqyqingfeng avatar Jun 04 '17 06:06 mqyqingfeng

感谢博主的分析,我终于看完了.博主写得好棒,看得出博主很用心哇

Flying-Eagle2 avatar Jun 06 '17 08:06 Flying-Eagle2