 
			 
				本书由资深软件开发专家撰写,凝聚其多年开发经验,系统、深入、全面地阐释JavaScript,内容涉及流行的Web开发实践,结合实际案例进行讲解,授人以渔。本书内容并不局限于某个具体功能的使用方法,而是系统深入地讲解JavaScript的本质与结构,清晰阐释ECMAScript、DOM和BOM三部分内容的关系及重要性,以帮助开发人员全面深入了解前端开发技术。本书讲解的内容通俗易懂、深入浅出,特别是书中所用示例的设计,它们不仅可以让读者理解某个知识点的用法,更能让读者明白具体知识点所使用的场景,从而更深入地理解具体内容。 本书内容安排合理,架构清晰,注意理论与实践相结合,适合那些希望学习Web编程语言的初、中级程序员和希望精通JavaScript的程序员阅读。
目录
第一篇JavaScript基础知识
第1章JavaScript怎么学2
1.1三种学习方法2
1.2JavaScript的学习方法3
第2章JavaScript简介6
2.1ECMAScript概述7
2.2DOM概述8
2.3BOM概述8
2.4HTML5概述9
第3章JavaScript的本质10
3.1工具介绍10
3.2JavaScript的结构15
3.3JavaScript的内存模型17
第4章function类型对象20
4.1创建function20
4.2用作对象23
4.3处理业务23
4.4创建对象49
4.5三种子类型57
第5章object类型对象62
5.1创建object类型对象的三种方式62
5.2对象的属性66
5.3属性的描述74
第6章直接量及其相关对象79
6.1直接量的保存方式79
6.2直接量的封包与解包80
6.3直接量的包装对象81
第7章点运算符与this关键字90
7.1点运算符90
7.2this的含义90
7.3关联方法后的this91
7.4内部函数中的this91
7.5对象的属性不可以继承93
第8章Global与Window对象94
8.1Global对象94
8.2Window对象的特殊性94
第二篇ECMAScript2015中的新特性
第9章类98
9.1新类型class98
9.2class的用法98
第10章模块100
10.1模块的基本用法100
10.2导入后重命名101
10.3默认导出102
10.4导入为命名空间103
10.5打包导出103
第11章新增语法105
11.1let和const105
11.2字符串模板106
11.3函数参数默认值106
11.4参数扩展107
11.5箭头函数107
11.6for-of遍历108
第12章新增对象111
12.1Symbol111
12.2容器对象112
12.3缓存对象121
12.4异步处理128
12.5GeneratorFunction和Generator132
12.6反射与代理134
第13章原有对象的新增属性140
13.1Object140
13.2String143
13.3Number150
13.4Array150
13.5Math154
13.6RegExp155
第三篇DOM
第14章DOM概述162
14.1DOM标准的结构162
14.2DOM标准的特点163
第15章DOM核心164
15.1文档对象164
15.2异常对象177
15.3辅助对象178
第16章DOM中的HTML标准182
16.1HTMLCollection182
16.2HTMLOptionsCollection184
16.3HTMLDocument184
16.4HTMLElement186
第17章DOM事件187
17.1事件流187
17.2EventTarget189
17.3EventListener190
17.4Event190
17.5DOM0级事件199
第18章DOM样式和视图201
18.1Views201
18.2StyleSheets202
18.3CSS204
第19章DOM遍历和范围215
19.1遍历215
19.2范围219
第四篇BOM
第20章window对象228
20.1窗口、框架相关属性228
20.2窗口操作相关属性230
20.3弹出窗口相关属性231
20.4浏览器对象相关属性231
20.5定时器相关属性231
20.6其他属性234
第21章location对象235
21.18个读写属性235
21.2三个方法属性237
第22章其他对象238
22.1history对象238
22.2navigator对象238
第五篇HTML5
第23章本地存储242
23.1本地存储的分类242
23.2Storage存储243
23.3StorageEvent245
23.4IndexedDB数据库248
第24章canvas作图271
24.1绘制矩形272
24.2绘制路径274
24.3组合与剪切282
24.4坐标检测285
24.5修改颜色和样式286
24.6插入文本290
24.7插入图片292
24.8环境的保存和恢复292
24.9移动坐标原点293
24.10旋转坐标系294
24.11缩放295
24.12自由转换297
24.13阴影298
24.14动画299
24.15游戏300
第25章WebSocket306
25.1网络传输的原理和底层协议306
25.2WebSocket简介307
25.3WebSocket的优势308
25.4基本应用308
25.5RESTful应用312
25.6在线聊天系统313
25.7传输对象和二进制数据318
第26章多线程处理335
26.1单线程与多线程的概念335
26.2线程与进程的概念337
26.3JavaScript中的多线程338
第27章获取位置信息347
27.1geolocation对象347
27.2Position接口348
27.3PositionError接口349
27.4PositionOptions接口350
27.5显示到地图上353
第28章富文本编辑器与公式编辑器356
28.1富文本编辑器的原理356
28.2公式编辑器364
第29章总结380
29.1ECMAScript380
29.2DOM和BOM381
29.3HTML5382
附录ExcelibIDB源代码384
前言
第一次接触JavaScript时的场景现在已经记不清了,不过因为有其他语言的基础,我很快就上手了。当时感觉JavaScript就是一门不需要专门去学的语言,太简单了!
但是,随着使用的深入,才逐渐发现事实并非如此。JavaScript既不像C语言这类面向过程的语言,也不像C++、Java这类面向对象的语言。JavaScript中有些概念虽然在其他语言(这里主要指C、C++和Java)里也有,但是含义却不尽相同,而且JavaScript中还有很多其他语言所没有的用法和概念。例如,在函数体中还可以再定义另外一个函数,函数也是对象,而且有个特殊的prototype属性,另外也可以使用函数创建对象,以及由此引出的闭包、参数作用域链和琢磨不透的this指针等,后来感觉越用越不明白了。
随着近几年B/S结构的快速发展,JavaScript已经成了一门不可或缺的语言。GitHub在2015年8月20日发布的统计数据显示,JavaScript是现在最受欢迎的语言。另一篇开源中国社区的文章更是指出,在所有stars超过10000个的仓库中,基于JavaScript开发的仓库占到55.7%!
既然离不开那就将其弄明白。经过一段时间的努力终于将其弄清楚了,而且也明白了其背后的实现原理。既然花费了不少精力,那么何不让更多的人受益,以使自己的付出更有意义呢。于是就有了大家手中的这本书。
本书的目标是帮助读者理解JavaScript的各种语法及底层的实现原理,进而灵活使用其所提供的内在对象,所以本书并不是针对零基础的读者。如果您要阅读本书,至少需要使用过JavaScript,如果同时还使用过C/C++或者Java就更好了。
本书特点
系统:全书采用了总分总的结构。首先整体介绍了JavaScript、ECMAScript、DOM、BOM和HTML5之间的关系,然后依次对每一项内容进行讲解,最后进行总结。全书系统介绍了JavaScript的内部结构;提出了将JavaScript分为两种对象的思维方式;深入分析JavaScript中各种属性和变量的关系;系统阐述DOM及其节点的结构;深入分析了HTML5中6种新增内容的使用方法。
全面:全面包含整体和细节两个方面。从整体来说,包含JavaScript基础、ECMAScript2015、DOM、BOM和HTML5这5个部分,几乎涵盖了JavaScript的所有相关知识。细节指每一部分内容的全面性,例如,JavaScript基础里涵盖了this指针、变量作用域、prototype继承、闭包、对象与对象之间的关系等比较容易出错的内容,ECMAScript2015(ECMAScript6)中介绍了绝大部分新增的内容,而HTML5部分几乎对所介绍的每种功能都讲解了其所包含的全部方法和属性。
深入:本书并不仅仅给大家介绍JavaScript中的各种语法,还说明了底层的实现原理,以及使用中需要注意的地方。另外,对于读者可能不熟悉的内容(例如,数据库、多线程等)会先介绍相关的概念,然后介绍JavaScript中的操作方法。
通俗易懂:本书尽量使用通俗易懂的文字给大家介绍相关知识,避免因为一些专有名词而给大家造成理解上的困难,对于不容易理解的地方还会通过比喻或举例来帮助大家理解。
本书结构
本书一共分为5篇。
第一篇整体介绍JavaScript的结构,以及与ECMAScript、DOM、BOM、HTML5的关系,另外还对ECMAScript的语法及背后的原理进行了系统讲解。
第二篇系统介绍ECMAScript2015中新增的内容。
第三篇介绍DOM的结构及其所包含的各种子标准。
第四篇介绍BOM中的4个对象。
第五篇介绍HTML5中的6种实用功能,并对全书进行总结。
致谢
本书的整个编写过程都离不开父亲韩志荣的支持和在背后的默默付出,这种感谢是无法言表的。另外,还要感谢清华大学出版社的秦健编辑以及他所在的团队,如果没有他们的支持和付出,本书也不可能跟大家顺利见面。
写书并不像看书那么简单,虽然笔者已经尽力了,但是由于精力和能力的原因难免还会存在表述不准确甚至不正确的地方,还请大家不吝批评指正。
对于一个对 JavaScript 语言的内部运作原理感到好奇的读者来说,这本书无疑是一次知识的盛宴。它并没有停留在表面,而是深入到了 JavaScript 引擎是如何工作的,以及 V8 引擎的一些优化策略。虽然我不是一个编译器或解释器专家,但书中的讲解非常有层次感,从词法分析、语法分析到代码生成,一步步揭示了 JavaScript 代码是如何被执行的。我特别喜欢关于“内存管理”和“垃圾回收”的章节,之前我总是觉得内存泄漏是一个神秘的bug,难以追踪。而这本书用通俗易懂的语言,解释了为什么会发生内存泄漏,以及开发者可以采取哪些措施来避免它。这让我更加谨慎地管理我的代码,避免不必要的资源占用。而且,书中对于 JavaScript 异步编程模式的探讨,也非常深入,不仅仅是回调函数,还涉及了 Promise 和 async/await 的底层实现,让我对这些现代的异步解决方案有了更透彻的理解。读完这本书,我感觉自己不再是那个只会“搬砖”的前端工程师,而是对整个 JavaScript 生态有了更宏观的认识。
评分作为一名在前端领域摸爬滚打多年的开发者,我一直觉得 JavaScript 是一门“善变”的语言,总是在不断地推出新的特性和标准,让人应接不暇。而这本书,则像一位经验丰富的老者,用一种沉稳而深刻的方式,引导我梳理了 JavaScript 的发展脉络和核心思想。它没有直接去罗列 ECMAScript 的最新特性,而是从 JavaScript 的设计哲学出发,去解析为什么会出现这些特性,以及这些特性背后解决的核心问题是什么。读到关于“this”绑定的章节时,我才真正理解了不同调用方式对“this”指向的影响,以及如何通过 call, apply, bind 来精准控制它,这绝对是困扰了我多年的一个难题。还有关于模块化开发的演进,从 IIFE 到 CommonJS,再到 ES Modules,这本书都给出了清晰的解释,让我明白为什么我们需要模块化,以及不同模块化方案的优劣。整本书的叙述风格非常严谨,但又不失趣味性,作者通过大量的代码示例和巧妙的比喻,将抽象的概念变得生动形象。阅读过程中,我经常会停下来思考,并且尝试在脑海中构建出相应的模型,这种主动思考的过程,比被动接受信息要有效得多。
评分这本书的内容,让我第一次深刻地体会到“实践出真知”这句话的含义。在阅读过程中,我不仅被动地吸收知识,更重要的是,我主动地去实践书中所讲解的每一个例子。作者提供了大量精炼的代码片段,这些代码不仅仅是示例,更像是可以直接拿来使用的“模板”。比如,在讲解原型链继承的时候,作者不仅解释了原理,还提供了一个非常经典的实现方式,我立刻就在本地环境中运行并进行了一些小的修改,观察其行为的变化。这种“边学边练”的方式,极大地巩固了我对知识的掌握。我发现,书中所提到的很多“陷阱”或者“坑”,比如在循环中闭包的使用问题,我曾经在实际项目中遇到过,当时花了很长时间去调试。而这本书用非常清晰的逻辑和易于理解的图示,将这些问题的根源和解决方案呈现在我面前,让我恍然大悟。而且,书中还提到了很多关于性能优化的技巧,这些都是在日常开发中容易被忽视,但却至关重要的方面。阅读完之后,我感觉自己编写 JavaScript 代码时,更加注重代码的健壮性和效率,而不是仅仅追求功能的实现。
评分这本书的结构设计得非常合理,循序渐进,引导读者逐步深入。开头的部分,让我对 JavaScript 的基本数据类型和操作有了更清晰的认识,甚至是一些我从未留意过的细节,比如原始类型和引用类型的区别,以及它们在内存中的存储方式。接着,作者开始探讨一些更高级的概念,比如函数作为一等公民的特性,以及它们是如何在 JavaScript 中扮演重要角色的。我特别欣赏书中对于“作用域链”的解释,它清晰地展示了变量在不同作用域中是如何被查找和访问的,这对于理解 JavaScript 的执行上下文至关重要。而且,书中还用了很多篇幅来讲解 JavaScript 的对象模型,包括属性描述符、原型继承以及如何创建和操作对象。这些内容虽然听起来有些理论化,但作者通过大量的实际例子,将它们与实际开发紧密联系起来,让我明白了这些理论是如何指导我们的编码实践的。读完这本书,我感觉自己对 JavaScript 的掌握更加全面和扎实,不再是零散的知识点堆砌,而是形成了一个完整的知识体系。
评分这本书给我带来了全新的视角,让我对 JavaScript 的理解上升到了一个前所未有的高度。以往在学习 JavaScript 的过程中,我总是停留在 API 的使用和语法层面,对于那些“为什么”和“如何做到”的问题,总是模糊不清,甚至觉得是“黑魔法”。这本书就像一把钥匙,精准地解锁了我对 JavaScript 内部机制的困惑。它不仅仅讲解了常见的概念,比如原型链、闭包、作用域等等,而是深入到了这些概念的底层原理。我终于明白了,原来 JavaScript 的继承是基于原型链的,而不是像 C++ 那样基于类的复制。闭包的威力,也让我看到了函数在内存中是如何保持对外部作用域的引用的。最让我惊喜的是,书中关于事件循环(Event Loop)的讲解,清晰地描绘了宏任务和微任务的执行顺序,让我对异步编程的理解不再是凭感觉,而是有了坚实的基础。即使是那些看似简单的操作,比如变量的声明和赋值,在书中被拆解分析后,也展现出了有趣的细节。这种刨根问底式的讲解方式,让我不仅知其然,更知其所以然,为我后续更深入的学习和更复杂的项目开发打下了坚实的基础。
评分还行。
评分优点:“著”,行为流畅。
评分优点:“著”,行为流畅。
评分缺点:小错误不少。
评分不错
评分还行。
评分还行。
评分不错
评分优点:“著”,行为流畅。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有