描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121336966
编辑推荐
这是一本帮助新人提高学习效率的书;它分享了 JavaScript的核心知识链。
这是一本告诉读者如何进阶的书;它可以帮助读者拥有进一步学习流行前端框架的能力,拥有在前端方向自主学习、自主进步的知识基础与能力。
这是一本告诉读者如何进阶的书;它可以帮助读者拥有进一步学习流行前端框架的能力,拥有在前端方向自主学习、自主进步的知识基础与能力。
内容简介
本书针对JavaScript 中的核心技术,结合前沿开发实践,对JavaScript 的内存、函数、执行上下文、闭包、面向对象、模块等重点知识,进行系统全面的讲解与分析。每一个知识点都以实际应用为依托,帮助读者更加直观地吸收知识点,为学习目前行业里的流行框架打下坚实基础。本书适合JavaScript 初学者,有一定开发经验但是对于JavaScript 了解不够的读者,以及开发经验丰富但没有形成自己知识体系的前端从业者。
目 录
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 实例1 11
3.2 实例2 15
3.3 生命周期 18
4 变量对象20
4.1 创建过程 20
4.2 实例分析 23
4.3 全局上下文的变量对象 26
目录| vii
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
7 this 59
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
viii | 目录
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.2 jQuery 封装详解 127
9.3 封装一个拖曳对象. 134
9.4 封装一个选项卡 147
9.5 封装无缝滚动 . 153
10 ES6 与模块化159
10.1 常用语法知识 . 160
10.2 模板字符串. 167
10.3 解析结构 168
10.4 展开运算符. 171
10.5 Promise 详解173
10.5.1 异步与同步173
10.5.2 Promise. 175
10.5.3 async/await . 185
10.6 事件循环机制 . 189
10.7 对象与class . 197
10.8 模块化 . 202
10.8.1 基础语法 204
10.8.2 实例209
1.1 栈 1
1.2 堆 3
1.3 队列. 4
2 内存空间5
2.1 基础数据类型与变量对象. 5
2.2 引用数据类型与堆内存空间 . 7
2.3 内存空间管理 . 9
3 执行上下文11
3.1 实例1 11
3.2 实例2 15
3.3 生命周期 18
4 变量对象20
4.1 创建过程 20
4.2 实例分析 23
4.3 全局上下文的变量对象 26
目录| vii
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
7 this 59
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
viii | 目录
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.2 jQuery 封装详解 127
9.3 封装一个拖曳对象. 134
9.4 封装一个选项卡 147
9.5 封装无缝滚动 . 153
10 ES6 与模块化159
10.1 常用语法知识 . 160
10.2 模板字符串. 167
10.3 解析结构 168
10.4 展开运算符. 171
10.5 Promise 详解173
10.5.1 异步与同步173
10.5.2 Promise. 175
10.5.3 async/await . 185
10.6 事件循环机制 . 189
10.7 对象与class . 197
10.8 模块化 . 202
10.8.1 基础语法 204
10.8.2 实例209
前 言
前言
在阅读这本书之前,不知道大家有没有思考过一个问题:
前端学习到底有没有捷径?
在我看来,学习的捷径并不是指不用付出多少努力就能够获得成功,而是在我们付出努力之
后,能够感觉到自己的努力没有白费,能够学到更多的知识,能够真正做到一分耕耘,一分收获。
所以学习有没有捷径?我的答案是:一定有。
其实大多数人并不是不想付出努力,而是不知道如何去努力,不知道如何有效地努力。我们
想要学好一个知识,想要掌握一门技术,但是往往不知从何下手。
前端的学习也是如此。也许上手简单的HTML/CSS 知识,会给刚开始学习的读者一个掌握
起来很容易的印象。但是整个前端知识体系繁杂而庞大,导致大多数人在掌握了一些知识之后,
仍然觉得自己并没有真正入门,特别是近几年,前端行业的从业人员所要掌握的知识越来越庞
杂,入门的门槛也越来越高,甚至进阶道路也变成了一场马拉松。
也许在几年以前,我们只需会用jQuery 就可以说自己是一名合格的前端开发者,但是现在
的JavaScript 语言已经不再是几年前那样,只需处理一些简单的逻辑就足够了。随着前后端分离
的方式被越来越多的团队运用于实践,用户对UI 的要求越来越高,对性能的要求也越来越高,
JavaScript 承载了更多的任务。虽然前端行业大热,但是我们的学习压力也随之倍增。
所以我一直在思考,在这样的大环境背景下,对于新人朋友来说,什么样的学习方式能让我
们的学习效率更高?或者说,一本什么样的前端书籍才算是好书?
是将所有的前端知识按部就班地罗列出来告诉大家吗?肯定不是。
很多书籍,以及各类官方文档其实都在做这件事。但是对于多数读者来说,把所有知识罗列
出来摆在眼前,并不是一个能够掌握它们的有效方式。这种学习方法不仅效率低下,而且学完之
后,也并不知道在实践中到底如何使用它们,我们其实是迷茫的。
所以,如果有一本书,它在努力地向读者传递一种行之有效的学习方法,那么对于适合这种
学习方法的读者来说,就一定是一本好书。
这就是我们这本书努力的方向。
iv | 前言
凭借多年的工作经验,在长期写博客并与读者互动的过程中,我总结出了一套适合大多数人
的学习方式,那就是:
围绕核心,渐进增强。
本书将整个JavaScript 相关的知识点简单粗暴地划分为核心知识与周边知识。
周边知识的特点就是相对独立,不用非得学会了其他的知识点之后才能掌握它,也不用掌握
了它之后才能学习其他的知识。例如Ajax,如果仅仅只是想要使用它,那么用别人封装好的方
法,通过官方文档或者搜索引擎,只需要两分钟你就知道怎么使用。周边知识不会成为我们学习
的瓶颈。
而核心知识不一样,核心知识是整个前端知识体系的骨架所在。它们前后依赖,环环相扣。
例如,在核心知识链中,如果你搞不清楚内存空间管理,你可能就不会真正明白闭包的原理,就
没办法完全理解原型链,这是一个知识的递进过程。我们在学习过程中遇到的瓶颈,往往都是由
于某一个环节的核心知识没有完整掌握造成的。而核心知识的另一个重要性就在于,它们能够帮
助我们更加轻松地掌握其余的周边知识。
所以,如果读者知道这条核心知识链到底是什么,并且彻底地掌握它们,那么你就已经具备
了成为一名优秀前端程序员的能力。这样的能力能够让你在学习其他知识点的时候方向明确,并
且充满底气。
所以这本书的主要目的就在于帮助读者拥有这样的进阶能力。
基于这个思路,这本书的呈现方式必定与其他图书不同。本书不会按部就班地告诉你如何声
前言| v
明变量、如何声明函数,不会罗列出所有的基础知识,对于基础知识的传授,《JavaScript 高级编
程》已经做得足够好,因此没有必要重复做同样的事情。我会一步一步与大家分享这条完整的核
心链。我的期望是,当大家学完这本书中的知识后,能够对前端开发的现状有一个大致的了解,
知道什么知识是有用的,什么知识是工作中需要的,拥有进一步学习流行前端框架的能力,拥
有在前端方向自主学习、自主进步的知识基础与能力。
后希望在这本书的陪伴下,大家能有一个愉快的、充实的学习历程。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 下载资源:本书如提供示例代码及资源文件,均可在下载资源处下载。
? 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社
区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/33696
在阅读这本书之前,不知道大家有没有思考过一个问题:
前端学习到底有没有捷径?
在我看来,学习的捷径并不是指不用付出多少努力就能够获得成功,而是在我们付出努力之
后,能够感觉到自己的努力没有白费,能够学到更多的知识,能够真正做到一分耕耘,一分收获。
所以学习有没有捷径?我的答案是:一定有。
其实大多数人并不是不想付出努力,而是不知道如何去努力,不知道如何有效地努力。我们
想要学好一个知识,想要掌握一门技术,但是往往不知从何下手。
前端的学习也是如此。也许上手简单的HTML/CSS 知识,会给刚开始学习的读者一个掌握
起来很容易的印象。但是整个前端知识体系繁杂而庞大,导致大多数人在掌握了一些知识之后,
仍然觉得自己并没有真正入门,特别是近几年,前端行业的从业人员所要掌握的知识越来越庞
杂,入门的门槛也越来越高,甚至进阶道路也变成了一场马拉松。
也许在几年以前,我们只需会用jQuery 就可以说自己是一名合格的前端开发者,但是现在
的JavaScript 语言已经不再是几年前那样,只需处理一些简单的逻辑就足够了。随着前后端分离
的方式被越来越多的团队运用于实践,用户对UI 的要求越来越高,对性能的要求也越来越高,
JavaScript 承载了更多的任务。虽然前端行业大热,但是我们的学习压力也随之倍增。
所以我一直在思考,在这样的大环境背景下,对于新人朋友来说,什么样的学习方式能让我
们的学习效率更高?或者说,一本什么样的前端书籍才算是好书?
是将所有的前端知识按部就班地罗列出来告诉大家吗?肯定不是。
很多书籍,以及各类官方文档其实都在做这件事。但是对于多数读者来说,把所有知识罗列
出来摆在眼前,并不是一个能够掌握它们的有效方式。这种学习方法不仅效率低下,而且学完之
后,也并不知道在实践中到底如何使用它们,我们其实是迷茫的。
所以,如果有一本书,它在努力地向读者传递一种行之有效的学习方法,那么对于适合这种
学习方法的读者来说,就一定是一本好书。
这就是我们这本书努力的方向。
iv | 前言
凭借多年的工作经验,在长期写博客并与读者互动的过程中,我总结出了一套适合大多数人
的学习方式,那就是:
围绕核心,渐进增强。
本书将整个JavaScript 相关的知识点简单粗暴地划分为核心知识与周边知识。
周边知识的特点就是相对独立,不用非得学会了其他的知识点之后才能掌握它,也不用掌握
了它之后才能学习其他的知识。例如Ajax,如果仅仅只是想要使用它,那么用别人封装好的方
法,通过官方文档或者搜索引擎,只需要两分钟你就知道怎么使用。周边知识不会成为我们学习
的瓶颈。
而核心知识不一样,核心知识是整个前端知识体系的骨架所在。它们前后依赖,环环相扣。
例如,在核心知识链中,如果你搞不清楚内存空间管理,你可能就不会真正明白闭包的原理,就
没办法完全理解原型链,这是一个知识的递进过程。我们在学习过程中遇到的瓶颈,往往都是由
于某一个环节的核心知识没有完整掌握造成的。而核心知识的另一个重要性就在于,它们能够帮
助我们更加轻松地掌握其余的周边知识。
所以,如果读者知道这条核心知识链到底是什么,并且彻底地掌握它们,那么你就已经具备
了成为一名优秀前端程序员的能力。这样的能力能够让你在学习其他知识点的时候方向明确,并
且充满底气。
所以这本书的主要目的就在于帮助读者拥有这样的进阶能力。
基于这个思路,这本书的呈现方式必定与其他图书不同。本书不会按部就班地告诉你如何声
前言| v
明变量、如何声明函数,不会罗列出所有的基础知识,对于基础知识的传授,《JavaScript 高级编
程》已经做得足够好,因此没有必要重复做同样的事情。我会一步一步与大家分享这条完整的核
心链。我的期望是,当大家学完这本书中的知识后,能够对前端开发的现状有一个大致的了解,
知道什么知识是有用的,什么知识是工作中需要的,拥有进一步学习流行前端框架的能力,拥
有在前端方向自主学习、自主进步的知识基础与能力。
后希望在这本书的陪伴下,大家能有一个愉快的、充实的学习历程。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
? 下载资源:本书如提供示例代码及资源文件,均可在下载资源处下载。
? 提交勘误:您对书中内容的修改意见可在提交勘误处提交,若被采纳,将获赠博文视点社
区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 交流互动:在页面下方读者评论处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/33696
评论
还没有评论。