编辑推荐

适读人群:JavaScript初学者,有一定开发经验但是对于JavaScript了解不够的读者,开发经验丰富但没有形成自己知识体系的前端从业者。

这是一本帮助新人提高学习效率的书;它分享了JavaScript的核心知识链。

这是一本告诉读者如何进阶的书;它可以帮助读者拥有进一步学习流行前端框架的能力,拥有在前端方向自主学习、自主进步的知识基础与能力。

内容简介

JavaScript核心技术开发解密》针对JavaScript中的核心技术,结合前沿开发实践,对JavaScript的内存、函数、执行上下文、闭包、面向对象、模块等重点知识,进行系统全面的讲解与分析。每一个知识点都以实际应用为依托,帮助读者更加直观地吸收知识点,为学习目前行业里的流行框架打下坚实基础。《JavaScript核心技术开发解密》适合JavaScript初学者,有一定开发经验但是对于JavaScript了解不够的读者,以及开发经验丰富但没有形成自己知识体系的前端从业者。

作者简介

阳波,先后在盛大星辰科技、软通动力、老虎证券从事Web前端开发的工作,目前个人创业中(霏微科技)。

目录

1三种基础数据结构1
1.1栈1
1.2堆3
1.3队列4
2内存空间5
2.1基础数据类型与变量对象.5
2.2引用数据类型与堆内存空间7
2.3内存空间管理9
3执行上下文11
3.1实例111
3.2实例215
3.3生命周期18
4变量对象20
4.1创建过程20
4.2实例分析23
4.3全局上下文的变量对象26
5作用域与作用域链27
5.1作用域27
5.1.1全局作用域27
5.1.2函数作用域28
5.1.3模拟块级作用域29
5.2作用域链31
6闭包33
6.1概念33
6.2闭包与垃圾回收机制38
6.3闭包与作用域链39
6.4在Chrome开发者工具中观察函数调用栈、作用域链与闭包41
6.5应用闭包49
6.5.1循环、setTimeout与闭包49
6.5.2单例模式与闭包50
6.5.3模块化与闭包53
7this59
8函数与函数式编程67
8.1函数67
8.2函数式编程.75
8.2.1函数是一等公民77
8.2.2纯函数80
8.2.3高阶函数85
8.2.4柯里化91
8.2.5代码组合101

9面向对象106
9.1基础概念106
9.1.1对象的定义106
9.1.2创建对象107
9.1.3构造函数与原型108
9.1.4更简单的原型写法114
9.1.5原型链114
9.1.6实例方法、原型方法、静态方法117
9.1.7继承118
9.1.8属性类型122
9.1.9读取属性的特性值127
9.2jQuery封装详解127
9.3封装一个拖曳对象.134
9.4封装一个选项卡147
9.5封装无缝滚动153
10ES6与模块化159
10.1常用语法知识160
10.2模板字符串167
10.3解析结构168
10.4展开运算符171
10.5Promise详解173
10.5.1异步与同步173
10.5.2Promise.175
10.5.3async/await185
10.6事件循环机制189
10.7对象与class197
10.8模块化202
10.8.1基础语法204
10.8.2实例209

前言/序言

前言

在阅读这《JavaScript核心技术开发解密》之前,不知道大家有没有思考过一个问题:

前端学习到底有没有捷径?

在我看来,学习的捷径并不是指不用付出多少努力就能够获得成功,而是在我们付出努力之后,能够感觉到自己的努力没有白费,能够学到更多的知识,能够真正做到一分耕耘,一分收获。

所以学习有没有捷径?我的答案是:一定有。

其实大多数人并不是不想付出努力,而是不知道如何去努力,不知道如何有效地努力。我们想要学好一个知识,想要掌握一门技术,但是往往不知从何下手。

前端的学习也是如此。也许上手简单的HTML/CSS知识,会给刚开始学习的读者一个掌握

起来很容易的印象。但是整个前端知识体系繁杂而庞大,导致大多数人在掌握了一些知识之后,仍然觉得自己并没有真正入门,特别是近几年,前端行业的从业人员所要掌握的知识越来越庞杂,入门的门槛也越来越高,甚至进阶道路也变成了一场马拉松。

也许在几年以前,我们只需会用jQuery就可以说自己是一名合格的前端开发者,但是现在

的JavaScript语言已经不再是几年前那样,只需处理一些简单的逻辑就足够了。随着前后端分离的方式被越来越多的团队运用于实践,用户对UI的要求越来越高,对性能的要求也越来越高,JavaScript承载了更多的任务。虽然前端行业大热,但是我们的学习压力也随之倍增。

所以我一直在思考,在这样的大环境背景下,对于新人朋友来说,什么样的学习方式能让我们的学习效率更高?或者说,一本什么样的前端书籍才算是好书?

是将所有的前端知识按部就班地罗列出来告诉大家吗?肯定不是。

很多书籍,以及各类官方文档其实都在做这件事。但是对于多数读者来说,把所有知识罗列出来摆在眼前,并不是一个能够掌握它们的有效方式。这种学习方法不仅效率低下,而且学完之后,也并不知道在实践中到底如何使用它们,我们其实是迷茫的。

所以,如果有一《JavaScript核心技术开发解密》,它在努力地向读者传递一种行之有效的学习方法,那么对于适合这种学习方法的读者来说,就一定是一本好书。

这就是我们这《JavaScript核心技术开发解密》努力的方向。

凭借多年的工作经验,在长期写博客并与读者互动的过程中,我总结出了一套适合大多数人的学习方式,那就是:

围绕核心,渐进增强。

JavaScript核心技术开发解密》将整个JavaScript相关的知识点简单粗暴地划分为核心知识与周边知识。

周边知识的特点就是相对独立,不用非得学会了其他的知识点之后才能掌握它,也不用掌握了它之后才能学习其他的知识。例如Ajax,如果仅仅只是想要使用它,那么用别人封装好的方法,通过官方文档或者搜索引擎,只需要两分钟你就知道怎么使用。周边知识不会成为我们学习的瓶颈。

而核心知识不一样,核心知识是整个前端知识体系的骨架所在。它们前后依赖,环环相扣。

例如,在核心知识链中,如果你搞不清楚内存空间管理,你可能就不会真正明白闭包的原理,就没办法完全理解原型链,这是一个知识的递进过程。我们在学习过程中遇到的瓶颈,往往都是由于某一个环节的核心知识没有完整掌握造成的。而核心知识的另一个重要性就在于,它们能够帮助我们更加轻松地掌握其余的周边知识。

所以,如果读者知道这条核心知识链到底是什么,并且彻底地掌握它们,那么你就已经具备了成为一名优秀前端程序员的能力。这样的能力能够让你在学习其他知识点的时候方向明确,并且充满底气。

所以这《JavaScript核心技术开发解密》的主要目的就在于帮助读者拥有这样的进阶能力。

基于这个思路,这《JavaScript核心技术开发解密》的呈现方式必定与其他图书不同。《JavaScript核心技术开发解密》不会按部就班地告诉你如何声明变量、如何声明函数,不会罗列出所有的基础知识,对于基础知识的传授,《JavaScript高级编程》已经做得足够好,因此没有必要重复做同样的事情。我会一步一步与大家分享这条完整的核心链。我的期望是,当大家学完这《JavaScript核心技术开发解密》中的知识后,能够对前端开发的现状有一个大致的了解,知道什么知识是最有用的,什么知识是工作中需要的,拥有进一步学习流行前端框架的能力,拥有在前端方向自主学习、自主进步的知识基础与能力。

最后希望在这《JavaScript核心技术开发解密》的陪伴下,大家能有一个愉快的、充实的学习历程。


其他推荐