具体描述
如果你只想阅读一本关于JavaScript的图书,那么本书应该是你的首选。本书由世界级JavaScript程序员撰写,JavaScript之父和多位JavaScript专家鼎力推荐。本书适合作为系统学习JavaScript的参考书,它在写作思路上几乎与现有的所有同类书都不同,打破常规,将编程原理与运用规则完美地结合在一起,而且将所有知识点与一个又一个经典的编程故事融合在一起,读者可以在轻松的游戏式开发中学会JavaScript程序设计,趣味性十足,可操作性极强。
全书一共12章:第1~3章介绍了JavaScript的基本语法,旨在帮助读者编写出正确的JavaScript程序,包含数字、算术、字符串、变量、程序结构、控制流程、类型、函数、对象和数组等最基础和最核心的内容;第4~7章讲解了JavaScript编程中的高级技术,目的是帮助读者编写更复杂的JavaScript程序,主要涉及错误处理、函数式编程、面向对象编程、模块化等重要内容;第8~12章则将重心转移到JavaScript环境中可用的工具上,分别详细讲解了正则表达式、与Web编程相关的知识、文档对象模型、浏览器事件和HTTP请求等。
作者简介
作者简介:
Marijn Haverbeke 世界级JavaScript程序员,通晓多种编程语言,在Web开发方面积累了丰富的经验,在JavaScript领域颇有影响力。如今,他专注于动态语言下的数据库系统的研究和Web API的设计。此外,他创建并维护着多个流行的开源项目。
译者简介:
徐涛(网名:汤姆大叔),微软最有价值专家(MVP)、项目经理、软件架构师,擅长大型互联网产品的架构与设计,崇尚敏捷开发模式,熟悉设计模式、前端技术以及各种开源产品,曾获MCP、MCSE、MCDBA、MCTS、MCITP、MCPD、PMP认证。
博客地址:http://www.cnblogs.com/TomXu
目录信息
译者序
前言
第1章 JavaScript基础:值、变量、控制流程 1
1.1 值1
1.1.1 数字1
1.1.2 算术2
1.1.3 字符串3
1.1.4 一元操作符3
1.1.5 布尔值、比较和布尔逻辑4
1.1.6 表达式与语句5
1.2 变量5
1.3 环境7
1.3.1 函数7
1.3.2 prompt和confirm7
1.3.3 print函数8
1.3.4 修改环境8
1.4 程序结构8
1.4.1 条件执行9
1.4.2 while循环与do循环9
1.4.3 缩进代码11
1.4.4 for循环11
1.4.5 跳出循环12
1.4.6 更新变量简便法12
1.4.7 使用switch进行调度12
1.4.8 大小写13
1.4.9 注释13
1.5 进一步认识类型14
1.5.1 Undefined值14
1.5.2 自动类型转换14
1.5.3 自动类型转换的风险15
1.5.4 进一步了解&&和||16
第2章 函数17
2.1 剖析函数定义17
2.1.1 定义顺序18
2.1.2 局部变量18
2.1.3 嵌套作用域19
2.1.4 栈20
2.1.5 函数值20
2.1.6 闭包21
2.1.7 可选参数21
2.2 技巧22
2.2.1 避免重复22
2.2.2 纯函数23
2.2.3 递归24
第3章 数据结构:对象与数组27
3.1 问题:Emily姨妈家的猫27
3.2 基本数据结构28
3.2.1 属性28
3.2.2 对象值29
3.2.3 对象即集合30
3.2.4 易变性30
3.2.5 对象即集合:数组31
3.2.6 方法32
3.3 解决关于Emily姨妈家猫的问题33
3.3.1 分离段落33
3.3.2 找出相关段落34
3.3.3 提取猫的名字35
3.3.4 完整算法35
3.3.5 清理代码36
3.3.6 日期表示38
3.3.7 日期提取39
3.3.8 收集更多信息40
3.3.9 数据表示41
3.4 更多理论42
3.4.1 arguments对象42
3.4.2 完成扫尾工作44
3.4.3 Math对象44
3.4.4 可枚举属性44
第4章 错误处理47
4.1 问题类型47
4.1.1 程序员错误47
4.1.2 运行时错误48
4.2 处理错误48
4.2.1 返回特殊值48
4.2.2 异常49
4.2.3 异常之后的错误清除50
4.2.4 Error对象51
4.2.5 未处理的异常51
4.2.6 选择性Catch51
4.3 自动化测试52
第5章 函数式编程55
5.1 抽象55
5.2 高阶函数56
5.2.1 修改函数57
5.2.2 归约函数58
5.2.3 映射数组59
5.3 隐士的悲惨故事59
5.3.1 HTML60
5.3.2 隐士的文本文件61
5.3.3 找出段落64
5.3.4 强调与脚注64
5.3.5 移动脚注67
5.3.6 生成HTML67
5.3.7 转化隐士的书70
5.4 其他函数技巧71
5.4.1 操作符函数71
5.4.2 分布应用72
5.4.3 组合73
第6章 面向对象编程75
6.1 对象75
6.1.1 定义方法75
6.1.2 构造函数76
6.1.3 从原型中构建77
6.1.4 构造函数与原型77
6.1.5 原型污染79
6.1.6 对象即词典80
6.1.7 指定接口81
6.2 构建生态系统模拟82
6.2.1 定义生态圈82
6.2.2 空间里的点83
6.2.3 呈现网格83
6.2.4 昆虫的编程接口85
6.2.5 生态圈对象86
6.2.6 this及其作用域87
6.2.7 有活力的生命88
6.2.8 昆虫移动90
6.2.9 更多生命形式90
6.2.10 多态性93
6.3 更逼真的模拟生态系统93
6.3.1 继承93
6.3.2 记录能量94
6.3.3 添加植物96
6.3.4 食草动物97
6.3.5 为它带来生命97
6.3.6 人工愚蠢99
6.4 原型继承100
6.4.1 类型定义工具100
6.4.2 类型原型101
6.4.3 对象的世界102
6.4.4 instanceof操作符103
6.4.5 混合类型104
第7章 模块化107
7.1 模块107
7.1.1 生态圈例子107
7.1.2 模块文件化108
7.2 模块的形态108
7.2.1 函数作为局部命名空间109
7.2.2 模块对象110
7.3 接口设计111
7.3.1 可预见性111
7.3.2 可组合性111
7.3.3 分层接口112
7.3.4 参数对象112
7.4 JS库113
第8章 正则表达式115
8.1 语法115
8.1.1 匹配字符集115
8.1.2 匹配单词和字符边界116
8.1.3 重复模式117
8.1.4 子表达式分组117
8.1.5 多选一117
8.2 匹配与替换118
8.2.1 匹配方法118
8.2.2 正则表达式和替换方法118
8.2.3 动态创建RegExp 对象120
8.3 解析.ini文件121
8.4 结论123
第9章 Web编程:速成课125
9.1 互联网125
9.1.1 URL网址125
9.1.2 服务器端编程126
9.1.3 客户端编程126
9.2 Web脚本基础知识126
9.2.1 windows对象126
9.2.2 document对象127
9.2.3 计时器128
9.2.4 表单128
9.2.5 表单脚本化130
9.2.6 自动焦点132
9.3 浏览器非兼容性132
9.4 延伸阅读133
第10章 文档对象模型135
10.1 DOM元素135
10.1.1 节点链接136
10.1.2 节点类型136
10.1.3 innerHTML属性137
10.1.4 查找节点137
10.1.5 创建节点138
10.1.6 节点创建辅助函数138
10.1.7 移动节点139
10.1.8 print实现140
10.2 样式表140
10.2.1 样式属性141
10.2.2 隐藏节点141
10.2.3 定位141
10.2.4 控制节点大小142
10.3 警示语142
第11章 浏览器事件143
11.1 事件句柄143
11.1.1 注册事件句柄143
11.1.2 事件对象145
11.1.3 鼠标相关事件类型145
11.1.4 键盘事件146
11.1.5 停止事件147
11.1.6 事件对象正规化147
11.1.7 跟踪焦点148
11.1.8 表单事件148
11.1.9 window事件149
11.2 示例:实现推箱子149
11.2.1 等级输入格式149
11.2.2 程序设计150
11.2.3 游戏板展示150
11.2.4 控制器对象153
第12章 HTTP请求157
12.1 HTTP协议157
12.2 XMLHttpRequest API158
12.2.1 创建请求对象158
12.2.2 简单的请求158
12.2.3 发送异步请求159
12.2.4 获取XML数据160
12.2.5 读取JSON数据161
12.2.6 基本的请求包装161
12.3 学习HTTP162
· · · · · · (收起)
读后感
原文:http://eloquentjavascript.net/3rd_edition/ 译文:https://github.com/wizardforcel/eloquent-js-3e-zh ==========================================================================================================================================================
和蝴蝶书《javascript语言精粹》一个级别的好书,两本都很薄,都只有一百多页,适合快速入门。但这两本书最好有一点编程基础,里面的最基本的知识没有那么详细,更多的是讲javascript的特色和原理,作者的javascript功底很深厚,很多地方值得细细玩味才能明白其中的原理。 现...
原文:http://eloquentjavascript.net/3rd_edition/ 译文:https://github.com/wizardforcel/eloquent-js-3e-zh ==========================================================================================================================================================
原文:http://eloquentjavascript.net/3rd_edition/ 译文:https://github.com/wizardforcel/eloquent-js-3e-zh ==========================================================================================================================================================
用户评价
说实话,在接触这本书之前,我对JavaScript的理解一直停留在“能用就行”的层面,遇到一些复杂的需求,总是感觉力不从心,需要花费大量时间去查阅资料。这本书的出现,简直是为我量身定做的。作者以一种近乎“考古”的态度,深入剖析了JavaScript语言设计的哲学和背后的原理,让我不再满足于知其然,更开始追求知其所以然。我尤其喜欢作者在讲解某些语言特性时,会追溯到JavaScript的历史演变,解释为什么会设计成这样,这种视角让我豁然开朗,也更能理解一些看似“奇怪”的语法规则。书中的案例分析也非常精彩,作者通过分析一些实际项目中常见的性能瓶颈和疑难杂症,给出了非常实用的解决方案,这些经验对我日后的开发工作具有极大的指导意义。我甚至觉得,这本书不仅仅是一本技术书籍,更像是一位经验丰富的老程序员在倾囊相授。
这本书是我近期阅读过最令我惊喜的一本。起初,我只是抱着试试看的心态入手,想着或许能从中找到一些零碎的技巧。然而,当我翻开第一页,就被作者严谨的逻辑和深入浅出的讲解深深吸引。它并没有像市面上许多教材那样,一上来就抛出各种晦涩的概念和复杂的代码示例,而是循序渐进,从最基础的变量、数据类型开始,层层递进,将JavaScript的核心概念一一剖析。尤其是对于事件循环、原型链、闭包等这些经常让初学者头疼的问题,作者都用非常形象的比喻和清晰的图解来解释,让我瞬间茅塞顿开。书中的代码示例也恰到好处,既有展示概念的小巧代码片段,也有构建实际功能的完整模块,让我在理论学习的同时,也能动手实践,巩固所学。读完这本书,我感觉自己对JavaScript的理解上了一个新的台阶,不再是零散的知识点堆砌,而是形成了一个完整而清晰的知识体系。
这是一本让我重新审视JavaScript编程的书。它没有贩卖“快速学会JavaScript”的焦虑,而是脚踏实地地引导读者去理解语言的底层机制。作者在讲解异步编程时,不再是简单地罗列Promise、async/await的使用方法,而是深入剖析了事件循环、宏任务队列、微任务队列之间的关系,让我真正理解了JavaScript是如何处理非同步操作的。这种深度解析对于提升代码的健壮性和性能优化至关重要。书中对ES6+新特性的介绍也十分到位,不仅展示了新特性的用法,更阐述了它们为何会被引入,解决了之前哪些痛点。我印象最深刻的是关于内存管理的部分,虽然JavaScript有垃圾回收机制,但了解其原理有助于我们写出更高效、更节省资源的代码。总而言之,这本书为我构建了一副JavaScript的“全景图”,让我看到了更广阔的视野。
我之前读过不少JavaScript的书,但大多都只是泛泛而谈,或者侧重于某一特定框架。这本书的特别之处在于,它专注于JavaScript语言本身,并且讲解得极其透彻。作者的语言风格非常严谨,但又不过于枯燥,他善于用类比和实例来解释复杂的概念,让我在阅读过程中始终保持兴趣。我特别欣赏作者对“this”指向和作用域链的讲解,这些是JavaScript中非常容易混淆的知识点,但在这本书中得到了非常清晰的阐述,让我对它们有了更深刻的理解。此外,书中还涉及了一些关于JavaScript引擎工作原理的介绍,虽然篇幅不长,但足以让我对JavaScript的执行过程有一个初步的认识。这本书更像是给开发者的一份“内功心法”,能够从根本上提升我们对JavaScript的理解和运用能力。
这本书的出现,彻底改变了我对JavaScript学习的看法。我之前总觉得JavaScript是一门“写起来很简单,但要精通很难”的语言,总是会遇到一些莫名其妙的问题。阅读了这本书之后,我才明白,原来很多问题都源于对语言本身理解的不足。作者以一种非常系统化的方式,将JavaScript的方方面面都梳理得井井有条。例如,在讲解数据结构时,作者不仅仅介绍了数组和对象,还深入探讨了Map、Set等ES6新增的数据结构,以及它们在不同场景下的适用性。书中的错误处理和调试技巧部分,也提供了很多实用的方法,让我能够更有效地定位和解决问题。我甚至觉得,这本书的内容远不止于“精解”,更像是一本“JavaScript修炼秘籍”,能够帮助读者从入门到精通,建立扎实的编程功底。
用上下班时间看完的第三本书。看起来比较吃力,第五章函数式编程和第六章的面向对象编程很多都没看懂。全书游戏式的编程教程还是很有意思的。译者名头很大,翻译的质量也只是中规中矩吧。不过,还是get到很多技巧!
内容稍显浮夸,基本知识介绍的不够到位,只是点到即止,所以它不适合新手! 可是里面的高级知识也没有多少,所以它也不适合高级人员。还是老老实实拜读犀牛吧。
翻译有点影响理解
用上下班时间看完的第三本书。看起来比较吃力,第五章函数式编程和第六章的面向对象编程很多都没看懂。全书游戏式的编程教程还是很有意思的。译者名头很大,翻译的质量也只是中规中矩吧。不过,还是get到很多技巧!
简洁明了,需要一些基础进行阅读