你不知道的JavaScript 下卷

你不知道的JavaScript 下卷 pdf epub mobi txt 电子书 下载 2025

[美] 凯尔·辛普森(Kyle Simpson) 著,单业 译
图书标签:
  • JavaScript
  • 编程
  • Web开发
  • 前端
  • 深入理解
  • 高级
  • 技术
  • 开发
  • 浏览器
  • 学习
想要找书就要到 图书大百科
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 人民邮电出版社
ISBN:9787115471659
版次:1
商品编码:12291874
包装:平装
丛书名: 图灵程序设计丛书
开本:16开
出版时间:2018-01-01
用纸:胶版纸
页数:264
正文语种:中文

具体描述

产品特色

编辑推荐

JavaScript语言有很多复杂的概念,但却用简单的方式体现出来(比如回调函数),因此,JavaScript开发人无需理解语言内部的原理,就能编写出功能全面的程序。然而,JavaScript的这些复杂精妙的概念才是语言的精髓,即使是经验丰富的JavaScript开发人,如果没有认真学习,也无法真正理解语言本身的特性。正是因为绝大多数人不求甚解,一遇到出乎意料的行为就认为是语言本身有缺陷,进而把相关的特性加入黑名单,久而久之就排除了这门语言的多样性,人为地使它变得不完整、不安全。

“你不知道的JavaScript”系列就是要让不求甚解的JavaScript开发人迎难而上,深入语言内部,弄清楚JavaScript每一个零部件的用途,轻松理解前端圈里出现的各种技术、框架和流行术语。本书介绍了该系统的两个主题:“起步上路”以及“ES6及更新版本”。

内容简介

JavaScript这门语言简单易用,很容易上手,但其语言机制复杂微妙,即使是经验丰富的JavaScript开发人员,如果没有认真学习的话也无法真正理解。本套书直面当前JavaScript开发人员不求甚解的大趋势,深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。本书是其下卷,主要介绍了JavaScript入门知识和对ES6及未来发展趋势的展望。
本书既适合JavaScript语言初学者了解其精髓,又适合经验丰富的JavaScript开发人员深入学习。

作者简介

Kyle Simpson,推崇开放的互联网,对JavaScript、HTML5、实时/端对端通信和Web性能有深入研究。他是技术书作家、技术培训师、讲师和开源社区的活跃成员。

【译者简介】

单业,计算机专业硕士,软件工程师,曾供职于多家软件公司,从事软件开发工作,现居于上海。译有《你不知道的JavaScript(中卷)》。

目录

前言 xi
致谢 xvii
第 一部分 起步上路
序 2
第 1 章 深入编程 4
1.1 代码 4
1.2 表达式 5
1.3 实践 6
1.3.1 输出 7
1.3.2 输入 8
1.4 运算符 9
1.5 值与类型 11
1.6 代码注释 13
1.7 变量 14
1.8 块 16
1.9 条件判断 17
1.10 循环 18
1.11 函数 20
1.12 实践 23
1.13 小结 25
第 2 章 深入JavaScript 26
2.1 值与类型 26
2.1.1 对象 28
2.1.2 内置类型方法 30
2.1.3 值的比较 31
2.2 变量 35
2.3 条件判断 37
2.4 严格模式 39
2.5 作为值的函数 40
2.5.1 立即调用函数表达式 41
2.5.2 闭包 42
2.6 this标识符 44
2.7 原型 46
2.8 旧与新 47
2.8.1 polyfilling 47
2.8.2 transpiling 48
2.9 非JavaScript 49
2.10 小结 50
第 3 章 深入“你不知道的JavaScript”系列 51
3.1 作用域和闭包 51
3.2 this和对象原型 52
3.3 类型和语法 53
3.4 异步和性能 53
3.5 ES6及更新版本 54
3.6 小结 55
第 二部分 ES6及更新版本
序 58
第 1 章 ES?现在与未来 59
1.1 版本 60
1.2 transpiling 61
1.3 小结 63
第 2 章 语法 64
2.1 块作用域声明 64
2.1.1 let声明 65
2.1.2 const声明 68
2.1.3 块作用域函数 70
2.2 spread/rest 71
2.3 默认参数值 73
2.4 解构 77
2.4.1 对象属性复制模式 78
2.4.2 不只是声明 79
2.4.3 重复赋值 81
2.5 太多,太少,刚刚好 83
2.5.1 默认值赋值 84
2.5.2 嵌套解构 84
2.5.3 解构参数 85
2.6 对象字面量扩展 90
2.6.1 简洁属性 90
2.6.2 简洁方法 90
2.6.3 计算属性名 95
2.6.4 设定[[Prototype]] 96
2.6.5 super对象 97
2.7 模板字面量 98
2.7.1 插入表达式 99
2.7.2 标签模板字面量 100
2.8 箭头函数 103
2.9 for..of循环 109
2.10 正则表达式 111
2.10.1 Unicode标识 111
2.10.2 定点标识 112
2.10.3 正则表达式flags 116
2.11 数字字面量扩展 117
2.12 Unicode 118
2.12.1 支持Unicode的字符串运算 119
2.12.2 字符定位 121
2.12.3 Unicode标识符名 123
2.13 符号 123
2.13.1 符号注册 125
2.13.2 作为对象属性的符号 127
2.14 小结 128
第 3 章 代码组织 129
3.1 迭代器 129
3.1.1 接口 130
3.1.2 next()迭代 131
3.1.3 可选的return(..)和throw(..) 132
3.1.4 迭代器循环 133
3.1.5 自定义迭代器 134
3.1.6 迭代器消耗 137
3.2 生成器 138
3.2.1 语法 139
3.2.2 迭代器控制 144
3.2.3 提前完成 147
3.2.4 错误处理 149
3.2.5 Transpile生成器 151
3.2.6 生成器使用 152
3.3 模块 153
3.3.1 旧方法 153
3.3.2 前进 154
3.3.3 新方法 156
3.3.4 模块依赖环 164
3.3.5 模块加载 166
3.4 类 167
3.4.1 class 168
3.4.2 extends和super 169
3.4.3 new.target 174
3.4.4 static 175
3.5 小结 176
第 4 章 异步流控制 177
4.1 Promise 177
4.1.1 构造和使用Promise 178
4.1.2 Thenable 180
4.1.3 Promise API 181
4.2 生成器 + Promise 183
4.3 小结 185
第 5 章 集合 187
5.1 TypedArray 187
5.1.1 大小端(Endianness) 188
5.1.2 多视图 189
5.1.3 带类数组构造器 190
5.2 Map 192
5.2.1 Map值 194
5.2.2 Map键 194
5.3 WeakMap 195
5.4 Set 196
5.5 WeakSet 198
5.6 小结 199
第 6 章 新增API 200
6.1 Array 200
6.1.1 静态函数Array.of(..) 200
6.1.2 静态函数Array.from(..) 201
6.1.3 创建数组和子类型 204
6.1.4 原型方法copyWithin(..) 205
6.1.5 原型方法fill(..) 206
6.1.6 原型方法find(..) 206
6.1.7 原型方法findIndex(..) 207
6.1.8 原型方法entries()、values()、keys() 208
6.2 Object 209
6.2.1 静态函数Object.is(..) 209
6.2.2 静态函数Object.getOwnPropertySymbols(..) 210
6.2.3 静态函数Object.setPrototypeOf(..) 210
6.2.4 静态函数Object.assign(..) 211
6.3 Math 212
6.4 Number 214
6.4.1 静态属性 214
6.4.2 静态函数Number.isNaN(..) 214
6.4.3 静态函数Number.isFinite(..) 215
6.4.4 整型相关静态函数 215
6.5 字符串 216
6.5.1 Unicode函数 217
6.5.2 静态函数String.raw(..) 217
6.5.3 原型函数repeat(..) 217
6.5.4 字符串检查函数 218
6.6 小结 218
第 7 章 元编程 219
7.1 函数名称 219
7.2 元属性 222
7.3 公开符号 223
7.3.1 Symbol.iterator 223
7.3.2 Symbol.toStringTag与Symbol.hasInstance 224
7.3.3 Symbol.species 225
7.3.4 Symbol.toPrimitive 226
7.3.5 正则表达式符号 226
7.3.6 Symbol.isConcatSpreadable 227
7.3.7 Symbol.unscopables 228
7.4 代理 228
7.4.1 代理局限性 231
7.4.2 可取消代理 232
7.4.3 使用代理 233
7.5 Reflect API 240
7.6 特性测试 243
7.7 尾递归调用(Tail Call Optimization,TCO) 245
7.7.1 尾调用重写 247
7.7.2 非TCO优化 248
7.7.3 元在何处 250
7.8 小结 251
第 8 章 ES6之后 253
8.1 异步函数 254
8.2 Object.observe(..) 257
8.2.1 自定义改变事件 258
8.2.2 结束观测 259
8.3 幂运算符 260
8.4 对象属性与... 260
8.5 Array#includes 261
8.6 SIMD 262
8.7 WebAssembly (WASM) 262
8.8 小结 264
《深度探索 JavaScript:从底层机制到高级实践》 内容简介 本书并非对现有 JavaScript 知识的简单罗列或浅尝辄止的介绍,而是一次深入到底层的技术之旅。我们旨在揭示 JavaScript 语言背后那些不为人知的精妙之处,帮助开发者超越表面语法,真正理解代码是如何运行的,并借此构建更健壮、更高效、更具可维护性的应用程序。本书将围绕 JavaScript 的核心机制展开,从引擎如何解析和执行代码,到内存管理、事件循环的原理,再到各种高级语言特性的深层剖析,为您提供一个全面而深入的理解框架。 第一部分:JavaScript 引擎的奥秘 我们将从 JavaScript 引擎的工作原理开始。深入理解 V8 引擎(或其他主流引擎)如何将我们编写的文本代码转化为机器能够理解和执行的指令,是掌握 JavaScript 性能优化的基石。 代码解析与抽象语法树 (AST): 浏览器或 Node.js 环境如何读取 JavaScript 代码?这一部分将详细讲解词法分析(Tokenization)和语法分析(Parsing)的过程,以及如何生成抽象语法树(AST)。我们将展示 AST 的结构,并解释它在后续代码优化和执行中的关键作用。理解 AST 有助于我们编写更易于引擎解析和优化的代码,甚至为未来的工具开发打下基础。 即时编译 (JIT) 与优化: JavaScript 是一种解释执行的语言,但现代引擎通过即时编译(JIT)技术实现了惊人的性能。我们将深入剖析 JIT 的工作流程,包括字节码的生成、优化的编译器(如 TurboFan、Ignition)是如何工作的。了解 JIT 的优化策略,例如内联、逃逸分析、类型推断等,可以帮助开发者编写出“引擎友好”的代码,避免常见的性能陷阱,并理解为什么某些代码模式会比其他模式运行得更快。 垃圾回收 (GC) 机制: 内存管理是 JavaScript 开发中的一个重要方面。本书将详细介绍 JavaScript 的垃圾回收机制,包括引用计数和标记清除等算法。我们将探讨不同类型的内存泄漏以及如何避免它们。理解 GC 的工作原理,有助于开发者更有效地管理内存,防止程序因内存不足而崩溃,并优化应用程序的整体资源消耗。 第二部分:JavaScript 的执行上下文与作用域链 理解代码的执行环境和变量的访问规则,是编写清晰、无歧义代码的关键。 执行上下文 (Execution Context): 什么是执行上下文?它如何与代码的执行关联?我们将深入探讨全局执行上下文、函数执行上下文以及在特定情况下的块级作用域执行上下文(虽然 ECMAScript 规范没有明确定义块级作用域执行上下文,但其行为与函数执行上下文有相似之处)。理解“执行上下文栈”(Call Stack)的工作原理,对于调试递归函数、处理异步操作以及理解闭包至关重要。 作用域 (Scope) 与作用域链 (Scope Chain): 作用域决定了变量的可访问性。我们将详细讲解词法作用域(Lexical Scope)的概念,并深入剖析作用域链是如何构建的。理解作用域链的查找机制,有助于我们理解变量的解析过程,避免命名冲突,并更清晰地组织代码结构。 闭包 (Closures): 闭包是 JavaScript 中一个强大且常被误解的概念。本书将从执行上下文和作用域链的角度,彻底剖析闭包的形成机制。我们将展示闭包在实际应用中的多种模式,例如模块化、数据封装、函数工厂等,并深入讨论如何避免不必要的闭包带来的内存占用问题。 第三部分:异步编程的深入解析 JavaScript 在单线程环境下如何处理耗时操作,是其核心优势之一。本书将深入探讨异步编程的各种机制。 事件循环 (Event Loop)、宏任务 (Macrotasks) 与微任务 (Microtasks): 这是理解 JavaScript 异步编程的绝对核心。我们将详细解析事件循环的工作流程,区分宏任务队列(如 `setTimeout`, `setInterval`, `I/O`)和微任务队列(如 `Promise.then`, `MutationObserver`)。理解它们之间的优先级和执行顺序,能够帮助我们精确控制异步代码的执行时机,避免“回调地狱”,并写出更加可预测的异步逻辑。 Promise 的高级用法与错误处理: `Promise` 是现代 JavaScript 异步编程的标准。除了基本的链式调用,我们将探讨 `Promise.all`, `Promise.race`, `Promise.allSettled` 等静态方法的应用场景,以及如何利用 `Promise` 进行复杂的异步流程控制。更重要的是,我们将深入研究 `Promise` 的错误传播机制,以及如何进行优雅的错误处理,构建健壮的异步应用。 Async/Await 的内部机制: `async/await` 语法糖的出现极大地简化了异步编程。本书将揭示 `async/await` 语法背后 `Promise` 的工作原理,以及它如何巧妙地利用生成器(Generators)来模拟同步代码的执行流程。理解这一点,可以帮助我们更好地调试 `async/await` 代码,并对其性能有更深入的认识。 第四部分:JavaScript 的高级特性与设计模式 掌握 JavaScript 的核心机制后,我们将进一步探索其强大的高级特性,并学习如何应用经典的设计模式来构建更优雅、可维护的代码。 原型链 (Prototype Chain) 与继承: JavaScript 的继承模型与传统的类继承有所不同。我们将深入剖析原型链的构成,理解对象如何通过原型链查找属性和方法。我们将展示如何利用原型链实现各种形式的继承,以及 ES6 `class` 语法的背后机制。 模块化 (Module Systems): 从 CommonJS 到 AMD,再到 ES Modules,JavaScript 的模块化历程反映了其生态的不断成熟。本书将详细讲解不同模块化方案的原理、优缺点以及如何在现代 JavaScript 开发中选择和使用它们。 Proxy 与 Reflect: `Proxy` 和 `Reflect` 是 ES6 引入的强大元编程(Metaprogramming)API。我们将详细介绍 `Proxy` 的陷阱(Traps)以及 `Reflect` 的各种静态方法,并展示如何利用它们实现数据劫持、访问控制、日志记录、对象校验等高级功能,极大地扩展了 JavaScript 的能力。 常用设计模式在 JavaScript 中的应用: 我们将选取一些经典的设计模式,如单例模式、工厂模式、观察者模式、发布-订阅模式、迭代器模式等,并结合 JavaScript 的特性,展示它们在实际开发中的具体实现和应用场景。理解这些模式有助于我们写出更具可重用性、可扩展性和可维护性的代码。 第五部分:性能优化与调试技巧 在掌握了 JavaScript 的底层机制后,我们便能更有效地进行性能优化和问题排查。 性能分析工具与方法: 学习如何使用浏览器开发者工具(如 Chrome DevTools)中的 Performance 面板、Memory 面板来分析代码性能瓶颈,识别内存泄漏,并进行有针对性的优化。 代码优化策略: 基于对引擎工作原理的理解,我们将总结一系列行之有效的代码优化策略,例如减少 DOM 操作、合理使用缓存、优化循环、避免不必要的函数调用等。 高级调试技巧: 掌握断点调试、条件断点、事件监听器断点、XHR/Fetch 监听等高级调试技巧,能够帮助我们更快速、准确地定位和解决复杂问题。 本书的读者对象 本书适合有一定 JavaScript 基础,希望深入理解语言底层机制,提升代码质量和性能的开发者。无论您是前端工程师、后端工程师,还是对 JavaScript 语言本身充满好奇的开发者,都将从本书中获益匪浅。我们鼓励读者在阅读过程中勤加实践,将理论知识转化为解决实际问题的能力。 通过阅读《深度探索 JavaScript:从底层机制到高级实践》,您将不仅仅是学会如何“写” JavaScript,更能理解“为什么”要这样写,从而在面对复杂项目时,能够游刃有余,构建出真正优秀的 JavaScript 应用程序。

用户评价

评分

作为一个有着几年 JavaScript 开发经验的开发者,我一直渴望能够更深入地理解这门语言。市面上有很多 JavaScript 的入门书籍,但往往在讲解完基础之后就戛然而止,留下了很多“黑箱”给开发者自己去猜。《你不知道的 JavaScript 下卷》这本书,就像是为我打开了一扇通往 JavaScript 核心秘密的大门。它并没有回避那些让很多初学者望而却步的复杂概念,而是选择正面迎接,并用一种我从未想过的清晰和直观的方式进行了解释。我特别喜欢书中对于 JavaScript 模块化和重用机制的探讨。之前我一直使用各种第三方库来实现模块化,但对于其内部原理总是知之甚少。这本书深入剖析了 CommonJS、AMD 和 ES Modules 的区别与联系,让我对 JavaScript 的模块化演进有了更全面的认识。更重要的是,它不仅仅停留在概念层面,还提供了大量可实践的代码示例,让我能够亲手去构建和理解这些模块化模式。这本书的阅读体验非常棒,每一个章节都像是一个精心设计的谜题,等待着你去破解,而破解的过程本身就充满了乐趣和成就感。

评分

我必须说,《你不知道的 JavaScript 下卷》这本书绝对是我近年来读过的技术书中,最让我感到“醍醐灌顶”的一本。我一直以来在 JavaScript 的开发过程中,都只是停留在“会用”的层面,对于一些底层机制的理解非常模糊。特别是当项目变得越来越复杂,涉及到一些性能优化和内存管理的问题时,我就感觉力不从心。这本书在“下卷”中,重点关注了 JavaScript 的一些高级话题,比如事件委托、委托模式、以及如何利用 JavaScript 实现更高效的 DOM 操作。书中对事件流的讲解非常细致,从事件捕获到事件冒泡,再到事件委托的原理,我之前一直没有把它们串联起来。看了这本书之后,我才明白为什么事件委托能够带来性能上的提升,以及在实际开发中如何巧妙地运用它。此外,书中关于性能优化的部分,虽然篇幅不长,但点出了很多关键性的优化思路,让我对如何写出更健壮、更高效的 JavaScript 代码有了新的认识。这本书不仅仅是教你“怎么做”,更是告诉你“为什么这样做”,这对于我这样一个追求深度理解的开发者来说,价值巨大。

评分

这本书绝对是 JavaScript 进阶者的“必读书单”!我之前一直以为自己对 JavaScript 已经掌握得差不多了,直到我遇到了《你不知道的 JavaScript 下卷》。这本书真的让我见识到了 JavaScript 的深邃和强大。我之前对 JavaScript 的一些高级特性,比如生成器(Generators)和迭代器(Iterators),一直处于“听说过,但不知道怎么用”的状态。这本书用非常生动的例子,解释了这些概念的本质,以及它们在实际开发中可以发挥的巨大作用。比如,它让我明白了生成器如何能够创建惰性求值的数据结构,以及如何实现更优雅的异步流程控制。此外,书中关于 JavaScript 的面向对象编程(OOP)和函数式编程(FP)的融合探讨,也给我带来了很多启发。我一直对函数式编程的纯粹和优雅很感兴趣,但又觉得它在 JavaScript 中应用起来有些别扭。这本书恰好弥补了这一点,它展示了如何将函数式编程的思想融入到 JavaScript 的面向对象实践中,创造出更具表现力和可维护的代码。总而言之,这本书让我对 JavaScript 的理解上升到了一个新的维度,也让我对未来的 JavaScript 开发充满了期待。

评分

这本《你不知道的 JavaScript 下卷》简直把我从 JavaScript 的“大坑”里拯救出来了!我一直以来对 JavaScript 的一些“怪癖”感到很头疼,比如作用域链、原型链继承,还有那个令人抓狂的 `this` 指向问题。每次写代码,总是在 `this` 上栽跟头,改来改去,最后也不知道为什么能跑起来。这本书彻底改变了我的认知。它用一种非常严谨而又通俗的方式,层层剥开了 JavaScript 的作用域和闭包的本质。我以前以为闭包就是函数嵌套函数,但这本书让我明白了闭包的真正力量在于它能“记住”其创建时的词法环境,这在很多场景下都非常有用,比如创建私有变量和模块。至于 `this`,这本书简直是 `this` 指向的“终结者”!它详细解释了在不同情况下 `this` 是如何被绑定的,无论是通过函数调用、方法调用、构造函数调用还是 `call`/`apply`/`bind`,都给出了清晰的解释和示例。我感觉自己现在写代码时,对于 `this` 的理解不再是“凭感觉”,而是有着明确的判断依据。这本书让我看到了 JavaScript 背后优雅的设计,也让我对自己的编码能力有了更大的信心。

评分

这本书简直是为前端开发者量身打造的神器!我最近在钻研 JavaScript 深入的特性,特别是在异步编程和事件循环方面,常常感觉自己陷入了死胡同。之前看了一些博客和文章,虽然也学到了一些皮毛,但总感觉不够系统,也抓不住核心。直到我翻开了《你不知道的 JavaScript 下卷》,才真正体会到什么叫做“拨云见日”。它不像市面上很多教程那样泛泛而谈,而是深入到 JavaScript 引擎的底层逻辑,用清晰易懂的语言剖析了 Promise、async/await 的工作原理,以及事件循环是如何一步步处理回调函数的。我印象最深的是关于微任务和宏任务的讲解,之前我一直把它们混淆,以为是同一个东西,看了这本书之后,我才明白它们之间精妙的差异,以及这对代码执行顺序产生的巨大影响。特别是书中通过一些精心设计的代码示例,让我能够亲手去验证这些概念,而不是停留在理论层面。这种“知其然,更知其所以然”的学习方式,真的让我对 JavaScript 的理解上了一个台阶。我强烈推荐给任何想要深入理解 JavaScript,尤其是在处理复杂异步场景时感到吃力的开发者。这本书不仅仅是知识的堆砌,更是思维方式的启迪。

评分

好评!

评分

内容翔实,多看书,推荐购买

评分

内容翔实,多看书,推荐购买

评分

替人买的,送货快,包装也可以没损坏,是正版吧

评分

感觉不错,价格也很公道,值的购买!

评分

配送特别快,服务特别好。

评分

为了不断提升自己,我购买了这些书本。购买这些书本之前我看了它的介绍以及目录,觉得自己还欠缺这些知识点,便购买了。

评分

京东物流一直非常给力,买东西这么久质量没得说

评分

不错不错不错不错不错不错不错不错不错不错不错不错不错

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.teaonline.club All Rights Reserved. 图书大百科 版权所有