![]()
内容推荐 JavaScript几乎可以说是所有现代Web应用程序的核心,无论是社交应用程序,还是时下流行的浏览器游戏。虽说学习和使用JavaScript的成本并不高,但是它却是一种灵活且复杂的编程语言,你可以用它来构建功能全面且复杂的应用程序。 本书的第3版进行了全面的更新和修订,以反映JavaScript和Web浏览器的当前进展,涵盖类表示法、箭头函数、迭代器、异步函数、模板字符串和块作用域等功能的全新内容。而且还增加大量的新练习来测试你的技能,让你保持在正轨上。 本书深入剖析了JavaScript编程语言的内部细节,并阐述了编写优雅高效代码的方法。作者Marijn Haverbeke从示例代码开始讲解,逐步实现了完整的项目,与此同时作者还提供了一系列习题供读者练习,你可以从中学习并了解如何编写自己的程序。 首先,你将学习JavaScript语言的基本结构,以及控制结构、函数和数据结构。然后在进入Web浏览器编程之前,你将学习错误处理与bug修复模块化和异步编程。在构建诸如浏览器游戏、简单的编程语言和绘画程序的项目时,你将学习如何: 了解编程的基本要素,包括语法、控制和数据 使用面向对象和函数式编程技术组织和阐明代码 编写浏览器脚本并开发基本的Web应用程序 高效地使用DOM与浏览器进行交互 利用Node.js构建服务器和实用程序 目录 部分语言 章值、类型和运算符2 1.1值2 1.2数字3 1.3字符串4 1.4一元运算符6 1.5布尔值6 1.5.1比较6 1.5.2逻辑运算符7 1.6空值8 1.7自动类型转换8 1.8小结10 第2章程序结构11 2.1表达式和语句11 2.2绑定12 2.3绑定名称13 2.4环境13 2.5函数14 2.6console.log函数14 2.7返回值15 2.8控制流15 2.9条件执行15 2.10while和do循环17 2.11缩进代码18 2.12for循环19 2.13跳出循环19 2.14简洁地更新绑定20 2.15使用switch调度值20 2.16首字母大写21 2.17注释22 2.18小结22 2.19习题22 第3章函数24 3.1定义一个函数24 3.2绑定和作用域25 3.3作为值的函数27 3.4声明表示法27 3.5箭头函数28 3.6调用栈28 3.7可选参数29 3.8闭包30 3.9递归31 3.10函数的增长方式34 3.11函数和副作用36 3.12小结36 3.13习题37 第4章数据结构:对象和数组38 4.1松鼠人38 4.2数据集39 4.3属性39 4.4方法40 4.5对象41 4.6可变性43 4.7松鼠人的日志44 4.8计算相关性45 4.9数组循环46 4.10最终分析47 4.11其他数组方法48 4.12字符串及其属性50 4.13剩余参数51 4.14Math对象52 4.15解构53 4.16JSON54 4.17小结54 4.18习题55 第5章高阶函数57 5.1抽象化58 5.2提取重复的内容58 5.3高阶函数59 5.4语言字符集数据集60 5.5过滤数组61 5.6用map转换62 5.7用reduce汇总62 5.8组合性63 5.9字符串和字符代码64 5.10文本识别66 5.11小结67 5.12习题67 第6章对象的秘密69 6.1封装69 6.2方法70 6.3原型71 6.4类72 6.5类表示法73 6.6覆盖派生属性74 6.7映射75 6.8多态性76 6.9符号76 6.10迭代器接口78 6.11读取器、设置器和静态79 6.12继承81 6.13instanceof运算符82 6.14小结82 6.15习题83 第7章项目:机器人85 7.1村庄Meadowf?ield85 7.2任务86 7.3持久化数据88 7.4模拟89 7.5邮车的路线90 7.6寻找路线91 7.7习题92 第8章缺陷和错误94 8.1语言94 8.2严格模式95 8.3类型96 8.4测试96 8.5调试97 8.6错误传播98 8.7异常99 8.8异常后清理100 8.9选择性捕获102 8.10断言103 8.11小结104 8.12习题104 第9章正则表达式106 9.1创建正则表达式106 9.2匹配测试107 9.3字符集107 9.4模式的重复部分108 9.5对子表达式分组109 9.6匹配和组109 9.7Date类110 9.8单词和字符串边界111 9.9选择模式112 9.10匹配机制112 9.11回溯113 9.12replace方法114 9.13贪心116 9.14动态创建RegExp对象117 9.15search方法117 9.16lastIndex属性118 9.17解析INI文件119 9.18国际字符121 9.19小结122 9.20习题123 0章模块124 10.1模块作为构件124 10.2包125 10.3简易模块126 10.4将数据作为代码执行127 10.5CommonJS127 10.6ECMAScript模块129 10.7构建和捆绑130 10.8模块设计131 10.9小结132 10.10习题133 1章异步编程134 11.1异步134 11.2乌鸦技术135 11.3回调136 11.4promise138 11.5失败139 11.6构建网络很困难140 11.7promise集合142 11.8网络泛洪142 11.9消息路由143 11.10异步函数145 11.11生成器147 11.12事件循环148 11.13异步bug149 11.14小结150 11.15习题150 2章项目:编程语言152 12.1解析152 12.2求解器156 12.3特殊形式157 12.4环境158 12.5函数159 12.6编译160 12.7作弊161 12.8习题161 第二部分浏览器 3章浏览器中的JavaScript164 13.1网络和互联网164 13.2Web165 13.3HTML166 13.4HTML和JavaScript168 13.5沙盒168 13.6兼容性和浏览器大战169 4章文档对象模型170 14.1文档结构170 14.2树171 14.3标准172 14.4通过树结构173 14.5寻找元素174 14.6更改文档175 14.7创建节点175 14.8属性177 14.9布局177 14.10样式179 14.11层叠样式180 14.12查询选择器181 14.13定位和动画182 14.14小结184 14.15习题184 5章处理事件186 15.1事件处理程序186 15.2事件和DOM节点187 15.3事件对象188 15.4传播188 15.5默认操作189 15.6按键事件190 15.7指针事件191 15.8滚动事件194 15.9焦点事件195 15.10加载事件196 15.11事件和事件循环196 15.12计时器197 15.13限频198 15.14小结199 15.15习题199 6章项目:平台游戏201 16.1游戏201 16.2技术202 16.3关卡202 16.4读取关卡203 16.5演员204 16.6封装是一种负担207 16.7绘图207 16.8动作和碰撞211 16.9演员的更新214 16.10跟踪按键215 16.11运行游戏216 16.12习题218 7章在画布上绘图219 17.1SVG219 17.2画布元素220 17.3线和面221 17.4路径222 17.5曲线223 17.6绘制饼图225 17.7文本226 17.8图片227 17.9转换228 17.10存储和清除转换230 17.11回到游戏231 17.12选择图形界面236 17.13小结236 17.14习题237 8章HTTP和表单239 18.1协议239 18.2浏览器和HTTP241 18.3fetch242 18.4HTTP沙盒243 18.5欣赏HTTP243 18.6安全性和HTTPS244 18.7表单域244 18.8焦点246 18.9禁用域247 18.10表单整体247 18.11文本域248 18.12复选框和单选按钮249 18.13选择域250 18.14文件域251 18.15在客户端存储数据252 18.16小结254 18.17习题255 9章项目:像素绘图程序257 19.1组件257 19.2状态259 19.3DOM的建立260 19.4画布261 19.5应用程序263 19.6绘图工具264 19.7保存和加载267 19.8撤销历史记录269 19.9让我们画吧270 19.10为什么这么难271 19.11习题271 第三部分Node 第20章Node.js276 20.1背景276 20.2node命令277 20.3模块277 20.4使用NPM安装278 20.5文件系统模块280 20.6HTTP模块281 20.7流283 20.8文件服务器284 20.9小结288 20.10习题289 第21章项目:技能分享网站290 21.1设计290 21.2长轮询291 21.3HTTP接口292 21.4服务器293 21.5客户端299 21.6习题304 第22章JavaScript性能305 22.1分阶段编译305 22.2图的布局306 22.3定义图307 22.4力导向布局308 22.5避免工作310 22.6分析器312 22.7函数内联313 22.8减少垃圾314 22.9垃圾收集314 22.10动态类型315 22.11小结316 22.12习题317 附录部分习题解答提示318 |