登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書

『簡體書』ECMAScript 2018快速入门

書城自編碼: 3290453
分類:簡體書→大陸圖書→計算機/網絡程序設計
作者: 黄灯桥
國際書號(ISBN): 9787302516811
出版社: 清华大学出版社
出版日期: 2018-12-01


書度/開本: 16开 釘裝: 平装

售價:HK$ 41.2

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
街头官僚:公共服务中的个人困境(公共行政与公共管理经典译丛;“十二五”国家重点图书出版规划项目)
《 街头官僚:公共服务中的个人困境(公共行政与公共管理经典译丛;“十二五”国家重点图书出版规划项目) 》

售價:HK$ 105.6
芯片战争:世界最关键技术的争夺战
《 芯片战争:世界最关键技术的争夺战 》

售價:HK$ 153.6
唐代玄宗肃宗之际的中枢政局
《 唐代玄宗肃宗之际的中枢政局 》

售價:HK$ 90.0
能源与动力工程测试技术(穆林)
《 能源与动力工程测试技术(穆林) 》

售價:HK$ 94.8
大学问·明清江南商业的发展
《 大学问·明清江南商业的发展 》

售價:HK$ 106.8
金庸评传
《 金庸评传 》

售價:HK$ 201.6
西方哲学史
《 西方哲学史 》

售價:HK$ 106.8
中国财富管理发展指数(2022)
《 中国财富管理发展指数(2022) 》

售價:HK$ 69.6

 

編輯推薦:
ECMAScript是应用广泛的语言,常被称为JavaScript,但实际上后者是ECMAScript标准的实现和扩展,现在*的版本是ECMAScript 2018。系统学习和掌握ECMAScript语言规范是熟练应用JavaScript进行Web前端开发的关键。
ECMAScript语言规范几乎每年都进行一次更新,在比较重要的更新版本ECMAScript 2015(也就是著名的ES6版)中,对JavaScript语言进行了大量的功能扩展和错误修正。本书基于ECMAScript 2018进行讲解,掌握这些内容对Web前端开发人员顺利使用JavaScript编程十分重要。
內容簡介:
ECMAScript是一种由ECMA国际通过ECMA-262标准化的脚本程序设计语言,目前*版本为ECMAScript 2018。JavaScript是这个标准的一个实现和扩展。这种语言广泛用于Web前端开发,可以说想成为一名前端开发高手,就必须掌握ECMAScript。
本书分为13章,较为系统地介绍ECMAScript语言,内容包括变量与常量、表达式和运算符、字符串、数字和符号、数组和类型化数组、对象、函数、集合和映射、迭代器和生成器、Promise对象与异步函数、代理、类和模块,*后引导读者自己动手写一个JS框架。
本书适合Web前端初学者、不了解ECMAScript的Web前端开发人员,也适合高等院校和培训学校相关专业的师生进行参考。
關於作者:
黄灯桥,网名上将军,资深Web技术专家,拥有10余年工作经验,一直致力于Web开发框架的研究,近年来致力于于Ext JS框架的开发与推广,撰写了大量关于Ext JS开发相关的教程,是社区公认的先锋和布道者,与Sencha 和Ext JS的官方开发团队有十分紧密的联系。精通C等传统的面向对象技术,而且还擅长ASP.NET、PHP和Java等Web开发技术。目前重点关注Sencha Touch、JQuery UI、HTML 5、CSS 3前端技术以及NoSQL数据库技术。活跃于CSDN(博客专家)等各大技术社区,在社区内知名度极高,深受网友欢迎。著有经典著作《JavaScript凌厉开发Ext详解与实践》、《Ext JS高级程序设计》、《Ext JS权威指南》和《Ext JS 6.2实战》。
目錄
目 录
第1章 变量与常量 1
1.1 var的问题 1
1.2 let语句 2
1.3 使用let的好处 2
1.3.1 避免重复声明 2
1.3.2 避免变量未声明就使用 3
1.3.3 避免全局变量成为全局对象的属性 3
1.3.4 简化代码 3
1.3.5 模拟私有成员 4
1.4 const语句 5
1.5 建议的方式 6
1.6 小 结 6
第2章 表达式和运算符 7
2.1 解构赋值 7
2.1.1 自定义变量名 8
2.1.2 剩余项 8
2.1.3 默认值 9
2.1.4 函数参数 9
2.1.5 忽略某些数据 10
2.1.6 克隆数组 11
2.1.7 克隆对象 11
2.1.8 数据交换 11
2.1.9 返回多个值 12
2.2 幂运算符 12
2.2.1 右结合 13
2.2.2 带歧义的幂运算 13
2.3 Math对象 13
2.4 小 结 14
第3章 字符串 15
3.1 四字节字符的定义方式 15
3.2 新增的方法 15
3.2.1 codePointAt方法 15
3.2.2 fromCodePoint方法 16
3.2.3 normalize方法 16
3.2.4 includes方法 17
3.2.5 startsWith方法 17
3.2.6 endsWith方法 18
3.2.7 repeat方法 18
3.2.8 padStart和padEnd方法 18
3.3 正则表达式 19
3.3.1 u标志 19
3.3.2 y标志 19
3.3.3 DOTALL模式(s标志) 20
3.3.4 flags属性 20
3.3.5 命名捕获组 20
3.3.6 在后向引用中使用命名捕获组 21
3.3.7 在替换中使用命名捕获组 21
3.3.8 Unicode属性转义 21
3.3.9 后行断言 22
3.4 模板字面量 22
3.4.1 语法 23
3.4.2 多行文本 24
3.4.3 嵌入数据 24
3.4.4 嵌套模板 24
3.4.5 带标签的模板字面量 26
3.4.6 原始值 26
3.4.7 转义字符序列的功能修改 27
3.5 小 结 27
第4章 数字和符号 28
4.1 数 字 28
4.1.1 Number.isFinite 28
4.1.2 Number.isNaN 29
4.1.3 Number.parseInt和Number.parseFloat 29
4.1.4 Number.isInteger 29
4.1.5 安全整型 30
4.2 符号 30
4.2.1 值的唯一性 31
4.2.2 私有成员 31
4.2.3 获取符号属性 32
4.2.4 全局共享 33
4.3 众所周知的符号 33
4.3.1 Symbol.hasInstance 33
4.3.2 Symbol.isConcatSpreadable 34
4.3.3 Symbol.iterator 35
4.3.4 Symbol.match 35
4.3.5 Symbol.replace 35
4.3.6 Symbol.search 35
4.3.7 Symbol.split 35
4.3.8 Symbol.species 35
4.3.9 Symbol.toPrimitive 36
4.3.10 Symbol.toStringTag 36
4.3.11 Symbol.unscopables 37
4.4 小 结 37
第5章 数组和类型化数组 39
5.1 新方法 39
5.1.1 of方法 39
5.1.2 from方法 40
5.1.3 find方法 40
5.1.4 findIndex方法 41
5.1.5 fill方法 41
5.1.6 copyWithin方法 41
5.1.7 includes方法 41
5.1.8 entries方法 42
5.1.9 keys方法 42
5.1.10 values方法 42
5.2 类型化数组 42
5.2.1 数据类型 42
5.2.2 数组缓冲区 43
5.2.3 数据视图 43
5.2.4 类型化数组即视图 45
5.2.5 类型化数组与数组的主要区别 45
5.3 小 结 46
第6章 对象 47
6.1 属性简写 47
6.2 方法简写 47
6.3 未定的属性名和方法名 48
6.4 新方法 49
6.4.1 is方法 49
6.4.2 assign方法 49
6.4.3 values方法 51
6.4.4 entries方法 52
6.4.5 getOwnPropertyDescriptors方法 52
6.5 原型 53
6.6 super关键字 54
6.7 小 结 55
第7章 函数 56
7.1 参数的默认值 56
7.1.1 设置默认值 56
7.1.2 参数默认值表达式 57
7.1.3 使用参数值作为默认值 57
7.1.4 使用参数值作为默认值表达式的参数 58
7.2 剩余参数 58
7.3 扩展运算符 59
7.4 name属性 59
7.4.1 声明函数 59
7.4.2 函数表达式 60
7.4.3 对象的方法 60
7.4.4 bind方法创建的函数 60
7.4.5 new Function创建的函数 60
7.4.6 实例 61
7.5 new.target属性 61
7.6 在参数中使用尾后逗号 62
7.7 箭头函数 62
7.7.1 基本语法 62
7.7.2 箭头必须与参数在同一行 63
7.7.3 不绑定this 63
7.7.4 没有arguments对象 65
7.7.5 定义方法时使用箭头函数 65
7.7.6 不能用作构造函数 65
7.7.7 没有原型 65
7.7.8 不能作为生成器 65
7.7.9 返回对象字面量 65
7.8 小 结 65
第8章 集合和映射 67
8.1 Set 67
8.1.1 基本语法 67
8.1.2 添加和删除元素 67
8.1.3 清空Set 68
8.1.4 判断某个值是否存在 68
8.1.5 遍历 68
8.1.6 返回元素总数 68
8.1.7 转换为数组 68
8.2 WeakSet 68
8.2.1 基本语法 69
8.2.2 添加和删除元素 69
8.2.3 判断某个值是否存在 69
8.2.4 不可遍历 69
8.3 Map 69
8.3.1 基本语法 70
8.3.2 添加和删除元素 70
8.3.3 获取值 70
8.3.4 清空Map 71
8.3.5 判断某个键是否存在 71
8.3.6 遍历 71
8.3.7 返回元素总数 71
8.4 WeakMap 71
8.4.1 基本语法 71
8.4.2 添加和删除元素 72
8.4.3 获取值 72
8.4.4 判断某个键是否存在 72
8.4.5 不可遍历 72
8.5 小 结 72
第9章 迭代器和生成器 73
9.1 迭代器 73
9.1.1 内置迭代器 73
9.1.2 next方法 73
9.1.3 对象与迭代器 74
9.2 异步迭代器 74
9.3 生成器 74
9.3.1 基本语法 75
9.3.2 返回可迭代对象 75
9.3.3 在类或对象中定义生成器 75
9.3.4 高级生成器 76
9.3.5 抛出错误 78
9.3.6 return语句 78
9.3.7 任务队列 79
9.3.8 异步生成器 81
9.4 forof循环 81
9.5 for awaitof循环 82
9.6 小 结 82
第10章 Promise对象与异步函数 83
10.1 Promise对象 83
10.1.1 基本语法 83
10.1.2 Promise的状态 84
10.1.3 then方法 84
10.1.4 catch方法 85
10.1.5 all方法 85
10.1.6 race方法 86
10.1.7 resolve方法 86
10.1.8 reject方法 86
10.1.9 finally方法 86
10.2 异步函数 86
10.3 小 结 87
第11章 代理 88
11.1 Reflect对象 88
11.2 使用代理 89
11.3 可代理的操作 90
11.3.1 getPrototypeOf操作 90
11.3.2 setPrototypeOf操作 90
11.3.3 isExtensible操作 91
11.3.4 preventExtensions操作 91
11.3.5 getOwnPropertyDescriptor操作 91
11.3.6 defineProperty操作 92
11.3.7 has操作 92
11.3.8 get操作 93
11.3.9 set操作 94
11.3.10 deleteProperty操作 94
11.3.11 ownKeys操作 95
11.3.12 apply操作 96
11.3.13 construct操作 96
11.4 可撤销的代理对象 97
11.5 小 结 97
第12章 类和模块 98
12.1 类 98
12.1.1 类的声明 98
12.1.2 类表达式 98
12.1.3 定义属性 99
12.1.4 定义方法 99
12.1.5 访问器属性 99
12.1.6 静态方法 100
12.1.7 继承 100
12.1.8 使用super调用父类同名方法 100
12.2 模 块 101
12.2.1 导出 101
12.2.2 导入 102
12.2.3 合并导出 103
12.2.4 无绑定的导入 103
12.3 模块的加载 104
12.4 小 结 104
第13章 自己动手写一个框架 105
13.1 框架的类型 105
13.2 开发工具 105
13.2.1 开发工具的选择 105
13.2.2 安装Visual Studio Code 106
13.2.3 配置开发环境 110
13.3 编写框架 111
13.3.1 创建和配置项目 111
13.3.2 安装Gulp 112
13.3.3 安装Browserify 113
13.3.4 安装Watchify 113
13.3.5 安装Babel 113
13.3.6 安装Uglify 114
13.3.7 配置Gulp 114
13.3.8 添加DOM操作 118
13.3.9 添加样式操作 119
13.3.10 添加样式类操作 122
13.3.11 添加属性操作 123
13.3.12 添加事件操作 125
13.3.13 添加Ajax功能 127
13.4 小 结 129
內容試閱
前 言
1994年,第一个比较成熟的浏览器Navigator(0.9版本)发布的时候,只是一个纯浏览器工具,不具备互动功能。为了解决互动问题,网景公司希望能通过一种脚本语言来实现。至于使用什么语言,网景公司一时也难以决定。这时,Sun公司推出了Java,给人的感觉就是拥抱了Java,就等于拥抱了未来。作为Java的信徒,网景公司于是选择与Sun合作,推出JavaScript语言。
网景的本意是制作一个Java的简化版脚本语言,但很不幸,他们请来开发JavaScript语言的设计师Brendan Eich 并不是Java的信徒,只用10天时间就将JavaScript写出来了。不过,JavaScript并没有成为简化版的Java,而是成了一个大杂烩,使用了C语言的语法、Java语言的数据类型和内存管理,借鉴Scheme,把函数式开发作为主要开发方式,借鉴Self语言,使用基于原型(prototype)的继承机制。这个大杂烩就这样成为我们现在使用起来比较酸爽的JavaScript。以至于作为JavaScript的设计师,他自己一点都不喜欢这个作品:与其说我爱JavaScript,不如说我恨它。它是C语言和Self语言结合的产物。十八世纪英国文学家约翰逊博士说得好:它的优秀之处并非原创,它的原创之处并不优秀。这都是和公司决策层妥协后的结果。而这造成的最终结果就是不少人误以为JavaScript就是Java,为了修正JavaScript的开发问题,不断衍生出不同版本的衍生语言,如CoffeeScript、TypeScript等。这件事给编者的第一观感就是情怀这东西,太有毒了,不得不时常用来提醒自己。想当初,编者也是有情怀的,也曾自学过Java,但在使用过后,加上Sun和微软的Java之争,就再也不去考虑了。
网景推出了这样一种语言,微软等其他公司也不甘落后,都各自推出了自己的脚本语言。如果各大公司都这样各自独立地发展下去,那么最头疼的就是开发人员了,为了解决各浏览器的兼容性问题,那可是要费九牛二虎之力的。还好,网景做了一个好的表率,在1996年11月,将JavaScript提交给了国家标准化组织ECMA,使JavaScript成了一种国际标准,各大公司虽然有私心,但也不得不遵守标准,不然,最大的后果就是被开发人员甚至用户抛弃。在1997年,ECMA发布262号标准文件的第一版,也就是ECMAScript 1.0。JavaScript这个名称只是人们习惯的说法,它的正式名称是ECMAScript,这样做一是因为JavaScript是网景公司的商标,不便于使用,二是为了保证这门语言的开放性和中立性。
ECMAScript在1998年发布了2.0版本,在1999年发布了3.0版本,然后就戛然而止。这其中的原因是在2000年酝酿ECMAScript 4.0的时候,版本太过于激进了,导致标准委员会的一些成员不愿意接受。2007年10月,ECMAScript 4.0版草案发布,但在发布正式版本前,又发生了严重分歧。其中,雅虎、微软和谷歌等为首的大公司反对大幅升级,主张小幅改动,这毕竟关系到他们的利益,而以Brendan Eich为首的Mozilla则坚持当前的草案。事情闹得不可开交,到了2008年7月,ECMA不得不中止ECMAScript 4.0的开发,将其中一部分小的功能改善发布为3.1版本,而激进的改动则留待以后解决。在2009年12月,将ECMAScript 3.1改名为ECMAScript 5.0发布。2011年6月,ECMAScript 5.1版发布,并且成为ISO国际标准(ISOIEC 16262:2011)。
2013年3月,ECMAScript 6草案冻结,不再添加新功能。新功能设想将被放到ECMAScript 7。2013年12月,ECMAScript 6草案发布。然后是12个月的讨论期,听取各方反馈。2015年6月,ECMAScript 6正式通过,成为国际标准。从这一版本开始,ECMAScript 6更名为ECMAScript 2015,也就是以年份作为版本号,不再使用以往的版本号。之后就每年发布一个版本,直到如今的ECMAScript 2018。
综观JavaScript的发展,与行业的发展是密不可分的。在JavaScript诞生后,程序员就开始考虑如何利用JavaScript来构建更丰富的客户端。例如,编者2000年在一家网络公司工作时,为了实现项目中的日期选择,就与同事合作编写了日期选择器,之后,又完成了一个颜色选择器。不过,这项工作没持续多长时间,编者就离开了,没继续从事这方面的工作。当编者重新走上Web开发的路途时,JavaScript已经从以前的单一组件化(如HTC、DXHtml等)走向了框架化。
在这里不得不提一下微软、谷歌和雅虎的贡献。XMLHttpRequest对象是微软发明的,被整合到了IE 4中,不过,在当时并没有引起什么轰动,直到谷歌在谷歌地图中用它实现了令人惊艳的交互效果,才引发了一场我们称之为Web 2.0的技术革命。伴随着Web 2.0的步伐,各种JavaScript框架以井喷的形式爆发。在这波大潮当中,雅虎的YUI可以说是第一个相当实用的图形界面(UI)库,可惜的是,最终用的人并不多。不过,雅虎的另一个贡献YUI Compressor却非常受欢迎,它本来是为YUI服务的,可将零散的YUI文件压缩为一个单一的脚本包,而最终发展成为各种框架或脚本应用程序的压缩打包程序,而这无疑是脚本发展的一个跨越。试想一下,对于一个大型项目或者框架来说,总不可能把脚本都写在一个文件里,但文件太多,对服务器负载和浏览器的响应来说都是难以接受的,通过压缩和打包的方式将文件压缩并合并到一个文件,对于服务器的负载和浏览器的响应就好很多了,无疑大大促进了框架的发展。
随着移动互联网的发展,JavaScript的应用越来越广泛,项目逐渐扩大,为了满足发展的需要,JavaScript不得不变,于是更新频率越来越快。
JavaScript版本当然是越新越好,但要使用最新版本的JavaScript,就必须考虑浏览器的兼容性问题。如果不能兼容大多数浏览器,那么部分工作就要重来,这是任何项目都难以承受的。编者在使用Ext JS开发项目的时候,排在第一位的需求是客户对浏览器有什么要求,如果一定要兼容IE 8以下的浏览器,编者建议不要使用Ext JS,换其他对这些浏览器兼容性更好的版本。当然,这在开发效率上是有所降低的,并且开发成本会上升。好在这方面要求比较高的客户不算太多,毕竟现在还死守IE浏览器的用户不是太多。编者秉持的观点是为了这一点点的用户而去牺牲开发效率、开发成本以及维护成本,不值得。而且用户也不是铁板一块,或许他们早厌烦了IE,只是没有机会,或者没有动力,或者不知道怎么去更换浏览器而已。在使用最新版本的ECMAScript方面就比编者使用Ext JS弹性大了,通过代码转换器和填充代码等方式,可以将代码转换为兼容老旧浏览器的代码,非常方便,还好,Ext JS这个框架也在往这个方向迁移。可以预见,未来JavaScript的开发模式基本都是使用NodeJS以及各种类库,使用最新的ECMAScript来开发项目的。能早点熟悉这种开发模式,对于要进入这个行业的开发人员来说是必不可少的。本书最后的例子就是为大家熟悉这种开发模式而专门添加的。
本书的开发环境如下。
● 操作系统:Windows 10。
● 开发工具:Visual Studio Code。
● NodeJS:10.7.0。
● 浏览器:Firefox 61.0.1
本书的源代码放在GitHub上,大家可以自行到相应的地址下载。具体的下载地址是: https:github.comtianxiaodeECMAScript2018。
在本书的出版过程中,得到了清华大学出版社图格新知事业部编辑的大力支持,在他们的努力下,促成了本书的出版,在此表示衷心的感谢。此外,还要感谢那些在互联网上默默耕耘的博客作者以及在各大论坛回复问题的大牛们,是他们的努力耕耘,才使编者找到解决问题的办法,是他们让编者有了进一步提高技能的机会。
编 者
2018年11月

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.