编辑推荐
全面介绍JavaScript的核心语法。解读变量作用域和闭包。ES6 的新特性。前端模块化。自动化构建工具。客户端存储。使用性能优化技术来改善用户体验。
 ;
内容简介
本书从JavaScript的基础语法开始讲解,循序渐进地介绍了JavaScript的必备知识和高级技巧,并通过大量实例带领读者掌握Web前端开发中常用的JavaScript知识及开发技巧。本书着重于为JavaScript编程开发人员及爱好者提供简单易懂、清晰明了的学习路径。本书结构清晰,内容编排由浅入深,能够帮助读者拥有Web开发中不可或缺的能力和技巧。 本书既适合JavaScript语言初学者,也适合JavaScript语言进阶者。
作者简介
暂无
目录
第1章 初入 JavaScript ; ; ; ; ; ; 001
1.1 JavaScript 简介 ; ; ; ; ; 002
1.2 JavaScript 起源 ; ; ; ; ; 003
1.3 JavaScript 实现 ; ; ; ; ; 004
1.3.1 ECMAScript 004
1.3.2 BOM ; ; ; 005
1.3.3 DOM ; ; ; 005
1.4 JavaScript 使用 ; ; ; ; ; 005
1.4.1 内联的 JavaScript ; ; ; ; ; ; 005
1.4.2 外部的 JavaScript ; ; ; ; ; ; 006
1.4.3 行内的 JavaScript ; ; ; ; ; ; 007
第2章 准备工作 008
2.1 开发工具 ; ; ; ; ; ; ; 009
2.1.1 Sublime Text ; ; ; ; ; ; ; ; 009
2.1.2 Visual Studio Code ; ; ; ; ; ; 010
2.1.3 WebStorm ; ; ; 011
2.1.4 Atom ; ; ; 012
2.2 Chrome 开发者工具 ; ; ; ; 012
2.2.1 信息类方法 ; ; ; ; ; ; ; ; 013
2.2.2 清除历史记录 ; ; ; ; 013
2.2.3 保留历史记录 ; ; ; ; 014
第3章 语法 015
3.1 基本语法 ; ; 016
3.1.1 语句 016
3.1.2 注释 016
3.1.3 标识符 017
3.2 变量和变量作用域 019
3.2.1 变量 019
3.2.2 声明变量 019
3.2.3 非声明变量 024
3.3 数据类型 025
3.3.1 内存空间 025
3.3.2 基本数据类型与引用数据类型 025
3.3.3 浅拷贝与深拷贝 027
3.3.4 typeof 与 instanceof 029
3.3.5 类型转换 031
3.3.6 基本包装类型 035
3.4 字符串 036
3.4.1 字符串的特点 039
3.4.2 length 属性 039
3.4.3 实例方法 039
3.5 运算符 048
3.5.1 算术运算符 048
3.5.2 逻辑运算符 050
3.5.3 比较运算符 051
3.5.4 三元运算符 052
3.5.5 赋值 053
3.5.6 位运算符 054
3.5.7 异步操作符 async function 055
3.5.8 其他运算符 059
3.5.9 运算符优先级 060
3.6 条件语句 062
3.6.1 if 语句 062
3.6.2 switch 语句 063
3.6.3 三元运算符 064
3.7 循环语句 065
3.7.1 for 065
3.7.2 while 065
3.7.3 for…in 067
3.7.4 for…of 068
3.7.5 break 和 continue 语句 068
3.8 错误处理 069
3.8.1 try…catch 069
3.8.2 throw 070
3.9 严格模式 070
第4章 函数 072
4.1 定义 073
4.1.1 返回值 073
4.1.2 箭头函数(Arrow Function) 074
4.1.3 关于 this 075
4.2 函数的属性和方法 080
4.2.1 length 属性 080
4.2.2 name 080
4.3 参数 080
4.3.1 按值传递 081
4.3.2 arguments 082
4.3.3 Rest 参数(剩余参数) 083
4.3.4 箭头函数中的 arguments 对象 083
4.3.5 默认参数 083
4.4 递归 084
4.5 闭包 086
4.5.1 什么是闭包 087
4.5.2 实践中的闭包 087
4.6 IIFE 089
4.7 高阶函数 090
4.7.1 回调函数 090
4.7.2 偏函数 091
4.7.3 柯里化 091
4.7.4 纯函数 092
第5章 数组 093
5.1 定义 094
5.2 多维数组 094
5.3 length 属性 094
5.4 方法 094
5.4.1 Array.isArray() 095
5.4.2 Array.of() 095
5.4.3 Array.from() 095
5.5 实例方法 099
5.5.1 concat() 099
5.5.2 copyWithin() 099
5.5.3 keys()、values() 和 entries() 100
5.5.4 forEach() 和 map() 100
5.5.5 every() 和 some() 101
5.5.6 filter() 101
5.5.7 fill() 102
5.5.8 find() 和 findIndex() 102
5.5.9 includes() 102
5.5.10 indexOf() 和 lastIndexOf() 103
5.5.11 join() 和 splice() 103
5.5.12 push()、pop()、unshift() 和 shift() 103
5.5.13 reduce() 和 reduceRight() 104
5.5.14 reverse() 104
5.5.15 slice() 104
5.5.16 sort() 104
5.5.17 toString() 105
5.5.18 toLocaleString() 105
第6章 对象 106
6.1 定义 107
6.1.1 定义对象的属性 107
6.1.2 定义对象的方法 108
6.1.3 getter 和 setter 108
6.2 属性 109
6.2.1 原型及原型链 109
6.2.2 更好的类型检测 110
6.2.3 构造函数 111
6.3 方法 112
6.3.1 Object.getPrototypeOf() 和 Object.setPrototypeOf() 112
6.3.2 Object.create() 112
6.3.3 Object.assign() 112
6.3.4 Object.defineProperty() 和 Object.getOwnPropertyDescriptor() 113
6.3.5 Object.defineProperties()和Object.getOwnPropertyDescriptors() 114
6.3.6 Object.keys()、Object.values() 和 Object.entries() 114
6.3.7 Object.freeze() 和 Object.isFrozen() 115
6.3.8 Object.seal() 和 Object.isSealed() 115
6.3.9 Object.preventExtensions() 和 Object.isExtensible() 116
6.3.10 Object.is() 116
6.3.11 Object.getOwnPropertyNames() 116
6.3.12 Object.getOwnPropertySymbols() 117
第7章 类 118
7.1 定义 119
7.2 constructor 119
7.2.1 实例化 119
7.2.2 类的方法 120
7.2.3 this 指向 120
7.2.4 constructor 属性 121
7.3 继承 122
7.4 静态方法 123
第8章 JSON 125
8.1 简介 126
8.2 JSON的解析 126
8.3 JSON的序列化 129
第9章 BOM 132
9.1 window 133
9.1.1 setTimeout 133
9.1.2 setInterval 133
9.1.3 定时器的问题 134
9.2 history 134
9.2.1 history 134
9.2.2 ajax 的前进后退 135
9.3 location 137
9.3.1 assign() 和 replace() 138
9.3.2 reload() 138
9.3.3 属性 138
9.4 navigator 139
第10章 DOM 140
10.1 DOM 简介 141
10.1.1 节点 141
10.1.2 节点类型 141
10.2 节点查找 142
10.2.1 获取单个节点 Node 142
10.2.2 获取节点集合 NodeList 143
10.3 节点操作 146
10.3.1 创建节点 146
10.3.2 新增节点 147
10.3.3 删除节点 148
10.3.4 修改节点 149
10.4 属性操作 149
10.4.1 getAttribute() 149
10.4.2 setAttribute() 150
10.4.3 点符号 150
10.4.4 classList 属性 150
10.5 内容操作 151
10.6 样式操作 152
10.6.1 getComputedStyle() 152
10.6.2 设置CSS样式 152
第11章 事件 153
11.1 事件处理 154
11.1.1 addEventListener() 154
11.1.2 removeEventListener() 155
11.2 事件流 156
11.3 事件对象与事件类型 157
11.3.1 阻止默认行为 159
11.3.2 阻止事件冒泡 159
11.3.3 事件委托 160
11.4 自定义事件 161
第12章 Ajax 163
12.1 Ajax 简介 164
12.1.1 XMLHttpRequest 164
12.1.2 Fetch 167
12.2 HTTP 168
12.2.1 客户端、服务端 168
12.2.2 代理服务器 168
12.2.3 HTTP是无状态,有会话的 168
12.2.4 HTTP 流 169
12.2.5 http1.0的问题 170
12.4 跨域 171
12.4.1 浏览器的同源策略 171
12.4.2 jsonp 171
12.4.3 img ping 171
12.4.4 window.name 172
12.4.5 postMessage 173
12.4.6 CORS 174
第13章 模块和构建工具 175
13.1 模块 176
13.1.1 CommonJS 176
13.1.2 AMD 177
13.1.3 CMD 177
13.1.4 UMD 178
13.2 ES6中的模块 178
13.2.1 export 178
13.2.2 import 179
13.2.3 导入、导出时的重命名 179
13.3 构建工具 180
13.3.1 npm 的使用 180
13.3.2 npm 发布包 181
第14章 客户端存储 184
14.1 cookie 185
14.1.1 什么是 cookie 185
14.1.2 有效期和作用域 185
14.1.3 关于 session 186
14.1.4 关于 token 186
14.2 本地存储 186
14.2.1 localStorage 187
14.2.2 .和 [ ] 操作 188
14.2.3 sessionStorage 188
14.3 IndexedDB 188
第15章 性能优化 191
15.1 减少请求数 192
15.1.1 合并代码 192
15.1.2 CSS Sprite 193
15.1.3 data url 193
15.2 减少代码体积 194
15.3 缓存文件 196
15.3.1 浏览器缓存 196
15.3.2 客户端缓存 197
15.4 使用内容分发网络 CDN 197
15.6 延迟加载 197
15.6.1 实现 198
15.6.2 完整代码 198
15.7 避免重定向 199
15.8 服务端gzip 199
15.8.1 什么是 gzip 199
15.8.2 gzip 压缩原理 200
第16章 类库和框架 201
16.1 预处理器 202
16.2 辅助库 202
16.2.1 jQuery 202
16.2.2 axios 203
16.2.3 Underscore 203
16.2.4 lodash 204
16.2.5 Moment.js 204
16.3 框架 205
16.3.1 Angular 205
16.3.2 React 205
16.3.3 Vue.js 205
附录 A Canvas 206
附录 B 前端中的 SEO 209
B.1 robots.txt 209
B.2 title 209
B.3 meta 210
B.4 其他 HTML 标签 210
B.5 结构化数据标记 210
附录 C 编程风格 212
C.1 减少全局变量污染 212
C.2 避免使用 var 212
C.3 使用字面量 212
C.4 字符串 213
C.5 解构 213
C.6 函数 213
C.7 模块 214
C.8 其他 214
前沿
自互联网出现以来,Web 前端便不断地发生变化。其间,我们看到了网页端脚本语言的萌发和进化,JavaScript 语言标准的制定,各浏览器厂商之间的竞争,等等。 随着 Web 应用的发展,涌现了大量优秀的库和框架,例如jQuery、lodash、Underscore、Backbone、Angular、React、Vue 等,这些库和框架大幅提升了Web开发与维护效率。 但近几年,Web前端的发展已经趋乎于病态,各种各样的“轮子”层出不穷,Web前端的发展速度已经有超过Web前端开发人员的学习速度之势,将开发人员远远甩在了后面。新的技术不断涌现,有些新技术是我们工作中无法回避的技术栈。虽然我们明知道这些新技术在未来注定会被淘汰,但迫于工作的需要不得不追赶它们。新的“轮子”不断出现,旧的“轮子”还在更新,这就导致Web前端学习的疲劳性,而且这种疲劳是心理上的。 例如,Grunt 学完, Glup 来了,Glup 学完,webpack又来了;又如less、sass、stylus,甚至刚学会一种新东西,转眼间就发现它已经被淘汰了;再如,公司团队要求掌握某些技术栈,你能不学吗?显然不能! 那么,我们该怎么办呢?“轮子”被造出来的初衷就是为了更好地解决相应的问题,它应该是能解决我们的问题的,而不是让我们惧怕学习它。在面对新的“轮子”时,不要盲目追赶,无论这些“轮子”出现或更新得有多快,最基础的核心知识是不变的。我们应该把自己的注意力放在问题本身上,而不是纠结于“轮子”,将更多的精力放在学习基础知识上。 Web 前端的三大核心知识为HTML、CSS、JavaScript。在本书中,不会过多涉及 HTML、CSS,而是将重点放在JavaScript上。 本书将从最基础的知识开始,循序渐进地讲解 JavaScript 的基本知识和高级技巧,力求内容简单易懂、清晰明了,通过大量实例带领读者学会 Web 前端开发中常用的 JavaScript 知识及开发技巧。 主要内容 全面介绍 JavaScript 的核心语法。 解读变量作用域和闭包。 ES6 的新特性。 前端模块化。 自动化构建工具。 客户端存储。 使用性能优化技术来改善用户体验。 阅读建议 阅读本书时,如果遇到不理解的内容,不要刻意耗费时间去理解和钻研,因为有可能你耗费的宝贵时间换来的是一个错误的理解结果,这是非常不值得的,我就吃过这方面的很多亏。所以我的建议是,在阅读时要注意保持不求甚解的态度,此刻不理解的,可能是自身水平没到,当自己的知识到了一定水平,自然就理解了。因此,读书时一定要多读几遍,“书读百遍,其义自见”,这是自古流传下来的道理,我也相信同一本书每读一遍都会有不同的收获。 下面是各章内容的简单介绍。 第 1、2 章:介绍 JavaScript 的诞生过程,以及 Chrome 开发者工具的简单使用方法。 第 3 章:主要介绍 JavaScript 的基本语法,为之后的 JavaScript 编程打下坚实的基础。 第 4~7 章:进一步介绍 JavaScript 中的几个特殊对象,包括函数、数组、对象、类。利用这些对象,可以更好地组织代码。 第 8 章:介绍一种比较常见的数据交换格式—JSON。 第 9~12 章:主要介绍 JavaScript 的另外两大核心—BOM 和 DOM,并讲解一些常用的 BOM 对象和 DOM 对象的操作方法。 第 13 章:介绍 JavaScript 中的模块。 第 14 章:介绍 cookie 和本地存储,以此了解Web前端与Web后端是如何进行用户鉴权的。 第 15 章:介绍一些优化Web前端性能的方案,从资源的请求、压缩、加载、缓存等方面着手,一步步实现Web前端性能优化。 第 16 章:介绍目前流行的一些开源库和框架。 附录 A:以一个文字和图片的合成案例,介绍 Canvas 是如何使用的。 附录 B:介绍Web前端中的 SEO,避免一些误操作导致用户体验降低。 附录 C:介绍一些常见的编码规范,为代码的开发与维护建立良好的基础。 代码约定 // -> 用于显示表达式的返回值,例如: 1 1; // -> 2 hello world; // -> "hello world" // > 用于显示 console.log 的执行结果及报错信息,例如: console.log(1 1); // > 2 console.log(hello, world); // > hello world 本书读者 本书既适合JavaScript 语言初学者作为入门的教程,也适合 JavaScript 语言爱好者作为进阶的参考。如果在阅读本书的过程中碰到问题,请扫描右侧的二维码,联系相关技术人员进行处理。 作者 2020年
JS全书:JavaScript Web前端开发指南 pdf下载声明
本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版