您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
漫画
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
JavaScript语言精髓与编程实践 第3版
字数: 1025000
装帧: 平装
出版社: 电子工业出版社
作者: 周爱民
出版日期: 2020-06-01
商品条码: 9787121386695
版次: 3
开本: 16开
页数: 732
出版年份: 2020
定价:
¥144
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
JavaScript是一门包含多种语言特性的混合范型语言,在面向对象和函数式语言特性方面表现尤为突出,且在ES6之后所添加的并行语言特性也极为出色。本书基于ES6,并涵盖近期新的ES2019规范,全面讲述JavaScript在五个方面的语言特性,以及将这些特性融会如一的方法。本书不但完整解析了JavaScript语言,还逐一剖析了相关特性在多个开源项目中的编程实践与应用,是难得的语言学习参考书。本书作者在前端开发领域经验丰富、深耕不辍,一书三版,历经十余年。书中对JavaScript语言的理解与展望,尤其适合期望精通这门语言的中高级程序员和语言实践者阅读。
目录
第1章二十年来的JavaScript1
1.1网页中的代码1
1.1.1新鲜的玩意儿1
1.1.2写在网页中的第一段代码2
1.1.3最初的价值3
1.2用JavaScript来写浏览器上的应用5
1.2.1我要做一个聊天室5
1.2.2Flash的一席之地7
1.2.3RWC与RIA之争8
1.3没有框架与库的语言能怎样发展呢10
1.3.1做一个框架10
1.3.2重写框架的语言层13
1.3.3富浏览器端开发(RWC)与AJAX14
1.4语言的进化16
1.4.1Qomo的重生16
1.4.2QoBean是对语言的重新组织17
1.4.3JavaScript作为一门语言的进化18
1.5大型系统开发20
1.5.1框架与架构是不同的20
1.5.2大型系统与分布式的环境21
1.5.3划时代的ES623
1.6为JavaScript正名24
1.6.1JavaScript25
1.6.1.1CoreJavaScript26
1.6.1.2SpiderMonkeyJavaScript27
1.6.1.3JScript27
1.6.2ECMAScript28
1.7JavaScript的应用环境29
1.7.1宿主环境30
1.7.2外壳程序31
1.7.3运行期环境32
1.7.4兼容环境下的测试34
第2章JavaScript的语法36
2.1语法综述36
2.1.1标识符所绑定的语义37
2.1.2识别语法错误与运行错误38
2.2JavaScript的语法:声明40
2.2.1变量的数据类型40
2.2.1.1基本数据类型41
2.2.1.2宿主定义的其他对象类型42
2.2.1.3值类型与引用类型42
2.2.1.4讨论:ECMAScript的类型系统43
2.2.2变量声明45
2.2.2.1块级作用域的变量声明与一般var声明47
2.2.2.2用赋值模板声明一批变量48
2.2.3使用字面量风格的值48
2.2.3.1字符串字面量、转义符49
2.2.3.2模板字面量51
2.2.3.3数值字面量52
2.2.4其他声明53
2.2.4.1常量声明53
2.2.4.2符号声明54
2.2.4.3函数声明55
2.3JavaScript的语法:表达式运算56
2.3.1一般表达式运算59
2.3.1.1逻辑运算59
2.3.1.2字符串运算60
2.3.1.3数值运算61
2.3.2比较运算61
2.3.2.1等值检测62
2.3.2.2序列检测64
2.3.3赋值运算67
2.3.3.1赋值的语义67
2.3.3.2复合赋值运算符68
2.3.3.3解构赋值68
2.3.4函数相关的表达式69
2.3.4.1匿名函数与箭头函数70
2.3.4.2函数调用70
2.3.4.3new运算72
2.3.5特殊作用的运算符72
2.3.5.1类型运算符(typeof)73
2.3.5.2展开语法(spreadsyntax)74
2.3.5.3面向表达式的运算符74
2.3.6运算优先级76
2.4JavaScript的语法:语句78
2.4.1表达式语句80
2.4.1.1一般表达式语句80
2.4.1.2赋值语句与隐式的变量声明81
2.4.1.3函数调用语句82
2.4.2变量声明语句86
2.4.3分支语句87
2.4.3.1条件分支语句(if语句)87
2.4.3.2多重分支语句(switch语句)88
2.4.4循环语句89
2.4.5流程控制:一般子句91
2.4.5.1标签声明91
2.4.5.2break子句92
2.4.5.3continue子句94
2.4.5.4return子句95
2.4.6流程控制:异常96
2.5JavaScript的语法:模块97
2.5.1模块的声明与加载98
2.5.1.1加载模块98
2.5.1.2声明模块100
2.5.2名字空间的特殊性101
2.5.2.1名字空间的创建者102
2.5.2.2名字空间中的名字是属性名102
2.5.2.3使用上的一些特殊性103
2.6严格模式下的语法105
2.6.1语法106
2.6.2执行108
2.6.3严格模式的范围110
2.6.3.1有限范围下的严格模式110
2.6.3.2非严格模式的全局环境112
2.7运算符的二义性112
2.7.1加号“+”的二义性114
2.7.2括号“()”的二义性114
2.7.3冒号“:”与标签的二义性116
2.7.4大括号“{}”的二义性117
2.7.4.1复合语句/语句块117
2.7.4.2声明对象字面量118
2.7.4.3函数声明119
2.7.4.4结构化异常119
2.7.4.5模板中的变量引用120
2.7.4.6解构赋值120
2.7.5逗号“,”的二义性122
2.7.6方括号“[]”的二义性123
2.7.7语法设计中对二义性的处理127
第3章JavaScript的面向对象语言特性130
3.1面向对象编程的语法概要130
3.1.1对象声明与实例创建132
3.1.1.1使用构造器创建对象实例132
3.1.1.2声明对象字面量134
3.1.1.3数组及其字面量137
3.1.1.4正则表达式及其字面量138
3.1.1.5在对象声明中使用属性存取器141
3.1.2使用类继承体系141
3.1.2.1声明类和继承关系141
3.1.2.2声明属性143
3.1.2.3调用父类构造方法144
3.1.2.4调用父类方法145
3.1.2.5类成员(类静态成员)146
3.1.3对象成员147
3.1.3.1成员的列举,以及可列举性147
3.1.3.2对象及其成员的检查150
3.1.3.3值的存取153
3.1.3.4成员的删除154
3.1.3.5方法的调用157
3.1.4使用对象自身157
3.1.4.1与基础类型数据之间的运算157
3.1.4.2默认对象的指定158
3.1.5符号158
3.1.5.1列举符号属性159
3.1.5.2改变对象内部行为159
3.1.5.3全局符号表160
3.2JavaScript的原型继承161
3.2.1空(null)与空白对象(empty)161
3.2.1.1空白对象是所有对象的基础162
3.2.1.2构造复制?写时复制?还是读遍历?163
3.2.1.3构造过程:从函数到构造器166
3.2.1.4内置属性与方法167
3.2.1.5原型为null:“更加空白”的对象170
3.2.2原型链的维护171
3.2.2.1外部原型链与constructor属性172
3.2.2.2使用内部原型链173
3.2.3原型继承的实质175
3.2.3.1简单模型175
3.2.3.2基于原型继承的设计方法177
3.2.3.3如何理解“继承来的成员”177
3.3JavaScript的类继承179
3.3.1类是静态的声明179
3.3.2super是全新的语法元素181
3.3.2.1super的作用181
3.3.2.2super指向什么182
3.3.2.3super对一般属性的意义184
3.3.2.4super在两种继承关系中的矛盾186
3.3.2.5super的动态计算过程188
3.3.3类是用构造器(函数)来实现的189
3.3.4父类的默认值与null值192
3.4JavaScript的对象系统196
3.4.1封装与多态196
3.4.1.1封装196
3.4.1.2多态198
3.4.1.3多态与方法继承200
3.4.2属性201
3.4.2.1方法201
3.4.2.2事件205
3.4.3构造对象系统的方法206
3.4.3.1类抄写206
3.4.3.2原型继承209
3.4.3.3类继承210
3.4.3.4直接创建对象211
3.4.3.5如何选择继承的方式213
3.4.4内置的对象系统214
3.4.4.1早期规范(ES5之前)中的对象216
3.4.4.2集合对象218
3.4.4.3结构化数据对象221
3.4.4.4反射对象223
3.4.4.5其他225
3.4.5特殊效果的继承226
3.5可定制的对象属性229
3.5.1属性描述符230
3.5.1.1数据描述符230
3.5.1.2存取描述符231
3.5.1.3隐式创建的描述符:字面量风格的对象或类声明232
3.5.2定制对象属性233
3.5.2.1给属性赋值234
3.5.2.2使用属性描述符235
3.5.2.3取属性或属性列表237
3.5.3属性表的状态239
3.6运行期侵入与元编程系统242
3.6.1关于运行期侵入243
3.6.1.1运行期侵入的核心机制243
3.6.1.2可被符号影响的行为244
3.6.1.3内部方法与反射机制251
3.6.1.4侵入原型255
3.6.2类类型与元类继承257
3.6.2.1原子257
3.6.2.2元与元类258
3.6.2.3类类型系统260
3.6.2.4类类型的检查261
3.6.2.5类类型的声明以及扩展特性263
3.6.3元编程模型266
第4章JavaScript语言的结构化269
4.1概述269
4.1.1命令式语言270
4.1.1.1存储与数据结构270
4.1.1.2结构化编程271
4.1.1.3结构化的疑难272
4.1.2面向对象语言275
4.1.2.1结构化的延伸275
4.1.2.2更高层次的抽象:接口278
4.1.2.3面向接口的编程方法280
4.1.3再论语言的分类281
4.1.3.1对语言范型的简化281
4.1.3.2结构化的性质282
4.1.4JavaScript的语源283
4.2基本的组织元素284
4.2.1标识符285
4.2.2表达式286
4.2.2.1字面量287
4.2.2.2初始器287
4.2.3语句288
4.2.4模块289
4.2.5组织的原则290
4.2.5.1原则一:抑制数据的可变性290
4.2.5.2原则二:最小逻辑和优选复用291
4.2.5.3原则三:语法在形式上的清晰与语义一致性293
4.3声明294
4.3.1声明名字295
4.3.2确定性296
4.3.3顶层声明297
4.4语句与代码分块300
4.4.1块301
4.4.1.1简单语句302
4.4.1.2单值表达式302
4.4.2块与语句的语法结构303
4.4.2.1语义上的代码分块303
4.4.2.2分支逻辑中的代码分块303
4.4.2.3多重分支逻辑中的代码分块304
4.4.2.4循环逻辑中的代码分块306
4.4.2.5异常中的代码分块308
4.4.3块与声明语句309
4.4.3.1只能在块中进行数据声明309
4.4.3.2能同时声明块的声明语句310
4.4.3.3声明语句与块的组织311
4.4.4块与语句的值312
4.4.4.1语句的执行状态314
4.4.4.2语句无值315
4.4.4.3语句有值316
4.4.5标签化语句与块317
4.5组织形式分块的方法318
4.5.1词法作用域319
4.5.1.1不存在“级别1:表达式”320
4.5.1.2级别2:语句320
4.5.1.3级别3:函数324
4.5.1.4级别4:模块325
4.5.1.5级别5:全局327
4.5.2执行流程及其变更328
4.5.2.1级别1:可能的逃逸329
4.5.2.2级别2:“break<label>;”等语法331
4.5.2.3级别3:return子句333
4.5.2.4级别4:动态模块与Promise中的流程控制.335
4.5.2.5级别5:throw语句335
4.5.3词法作用域之间的相关性336
4.5.4执行流程变更的内涵337
4.6层次结构程序设计340
4.6.1属性的可见性341
4.6.1.1属性在继承层次间的可见性342
4.6.1.2属性在继承树(子树)间的可见性343
4.6.2多态的逻辑343
4.6.2.1super是对多态逻辑的绑定344
4.6.2.2super是一个作用域相关的绑定345
4.6.3私有作用域的提出347
4.7历史遗产:变量作用域349
4.7.1变量作用域350
4.7.1.1级别3:函数(局部变量)351
4.7.1.2级别4:模块352
4.7.1.3级别5:全局变量352
4.7.2变量的特殊性与变量作用域的关系353
4.7.2.1变量提升353
4.7.2.2变量动态声明354
4.7.2.3变量隐式声明(全局属性)355
4.8私有属性与私有字段的纷争356
4.8.1私有属性的提出357
4.8.1.1对象字面量中的作用域问题357
4.8.1.2类声明中的作用域问题359
4.8.1.3识别“对象自己(访问)”360
4.8.1.4识别“对象访问(自己)”361
4.8.2从私有属性到私有成员361
4.8.2.1私有属性与私有字段361
4.8.2.2私有字段与私有变量363
4.8.2.3再论私有成员364
4.8.3“类字段”提案的实现概要364
4.8.3.1语法设计365
4.8.3.2实现框架366
4.8.3.3概要分析368
4.8.4“私有属性”提案的设计与提议368
4.8.4.1语法设计368
4.8.4.2语法与语义的关系371
4.8.5“私有属性”提案的实现373
4.8.5.1核心的实现逻辑373
4.8.5.2一个简短的回顾374
4.8.5.3保护属性的实现375
4.8.5.4可见性的管理(unscopables)376
4.8.5.5避免侵入(thisValue)377
4.8.5.6内部访问(internal)378
4.8.5.7概要分析380
第5章JavaScript的函数式语言特性381
5.1概述381
5.1.1从代码风格说起382
5.1.2为什么常见的语言不赞同连续求值383
5.1.3函数式语言的渊源384
5.2从运算式语言到函数式语言386
5.2.1JavaScript中的几种连续运算386
5.2.1.1连续赋值386
5.2.1.2三元表达式的连用387
5.2.1.3连续逻辑运算388
5.2.1.4逗号运算符与连续运算389
5.2.1.5解构赋值389
5.2.1.6函数与方法的调用390
5.2.2如何消灭语句391
5.2.2.1通过表达式消灭分支语句391
5.2.2.2通过函数递归消灭循环语句393
5.2.2.3其他可以被消灭的语句394
5.2.3运算式语言394
5.2.3.1运算的实质是值运算394
5.2.3.2运算式语言的应用396
5.2.4重新认识函数397
5.2.4.1函数是对运算式语言的补充398
5.2.4.2函数是代码的组织形式398
5.2.4.3当运算符等义于某个函数时399
5.2.5函数式语言401
5.2.5.1“函数”===“Lambda”402
5.2.5.2函数是操作数402
5.2.5.3在函数内保存数据403
5.2.5.4函数内的运算对函数外无副作用404
5.2.5.5函数式的特性集405
5.3JavaScript中的函数405
5.3.1参数405
5.3.1.1可变参数406
5.3.1.2默认参数408
5.3.1.3剩余参数409
5.3.1.4模板参数410
5.3.1.5参数对象411
5.3.1.6非简单参数413
5.3.1.7非惰性求值414
5.3.1.8传值参数416
5.3.2函数418
5.3.2.1一般函数419
5.3.2.2生成器函数421
5.3.2.3类423
5.3.2.4方法425
5.3.2.5箭头函数426
5.3.2.6绑定函数427
5.3.2.7代理函数431
5.3.3函数的数据性质431
5.3.3.1函数是第一型432
5.3.3.2数据态的函数433
5.3.3.3类与对象态的函数434
5.3.3.4代理态的函数438
5.3.4函数与逻辑结构439
5.3.4.1递归439
5.3.4.2函数作为构造器的递归441
5.3.4.3块级作用域中的函数442
5.4函数的行为443
5.4.1构造444
5.4.1.1this引用的创建444
5.4.1.2初始化this对象446
5.4.2调用448
5.4.2.1不使用函数调用运算符449
5.4.2.2callee:我是谁452
5.4.2.3caller:谁调用我453
5.4.3方法调用455
5.4.3.1属性存取与this引用的传入.456
5.4.3.2this引用的使用457
5.4.3.3在方法调用中理解super458
5.4.3.4动态地添加方法459
5.4.4迭代461
5.4.4.1可迭代对象与迭代461
5.4.4.2可迭代对象在语法层面的支持462
5.4.4.3迭代器的错误与异常处理464
5.4.5生成器中的迭代466
5.4.5.1生成器对象466
5.4.5.2生成器的错误与异常处理469
5.4.5.3方法throw()的隐式调用472
5.4.5.4向生成器中传入的数据474
5.5闭包475
5.5.1闭包与函数实例476
5.5.1.1闭包与非闭包476
5.5.1.2什么是函数实例477
5.5.1.3看到闭包478
5.5.1.4闭包的数量479
5.5.2闭包的使用481
5.5.2.1运行期的闭包482
5.5.2.2闭包中的可访问标识符483
5.5.2.3用户代码导致的闭包变化484
5.5.2.4函数表达式的特殊性485
5.5.2.5严格模式下的闭包486
5.5.3与闭包类似的实例化环境487
5.5.3.1全局环境487
5.5.3.2模块环境490
5.5.3.3对象闭包491
5.5.3.4块492
5.5.3.5循环语句的特殊性493
5.5.3.6函数闭包与对象闭包的混用495
5.5.4与闭包相关的一些特性496
5.5.4.1变量维护规则496
5.5.4.2引用与泄露497
5.5.4.3语句或语句块中的闭包问题499
5.5.4.4闭包中的标识符(变量)特例502
5.5.4.5函数对象的闭包及其效果504
第6章JavaScript的动态语言特性506
6.1概述506
6.1.1动态数据类型的起源507
6.1.2动态执行系统507
6.1.3脚本系统的起源509
6.1.4脚本只是表现形式510
6.2动态类型:对象与值类型之间的转换512
6.2.1包装类:面向对象的妥协512
6.2.1.1显式创建513
6.2.1.2显式包装514
6.2.1.3隐式包装的过程与检测方法514
6.2.1.4包装值类型数据的必要性与问题517
6.2.1.5其他字面量与相应的构造器519
6.2.1.6函数特例519
6.2.2从对象到值520
6.2.2.1对象到值的隐式转换规则520
6.2.2.2直接的值运算不受包装类的方法影响.522
6.2.2.3什么是“转换的预期”524
6.2.2.4深入探究valueOf()方法525
6.2.2.5布尔运算的特例527
6.2.2.6符号Symbol.toPrimitive的效果528
6.2.3显式的转换529
6.2.3.1显式转换的语法含义530
6.2.3.2对“转换预期”的显式表示531
6.2.3.3关于符号值的补充说明531
6.3动态类型:值类型的转换532
6.3.1值运算:类型转换的基础532
6.3.1.1完整过程:运算导致的类型转换533
6.3.1.2语句或语义导致的类型转换535
6.3.2值类型之间的转换535
6.3.2.1undefined的转换536
6.3.2.2number的转换537
6.3.2.3boolean的转换537
6.3.2.4string的转换538
6.3.2.5symbol的转换539
6.3.3值类型之间的显式转换540
6.3.3.1到数值的显式转换540
6.3.3.2到字符串类型的显式转换541
6.3.3.3到undefined值的显式处理544
6.3.3.4到布尔值的显式处理544
6.4动态类型:对象与数组的动态特性545
6.4.1关联数组与索引数组545
6.4.2索引数组作为对象的问题546
6.4.2.1索引数组更加低效547
6.4.2.2属性length的可写性549
6.4.2.3类型化数组的一些性质550
6.4.3类数组对象:对象作为索引数组的应用552
6.4.4其他554
6.5重写555
6.5.1标识符的重写及其555
6.5.1.1早于用户代码之前的声明与重写556
6.5.1.2声明对标识符可写性的影响559
6.5.1.3赋值操作带来的重写560
6.5.1.4对象内部方法对重写的影响563
6.5.1.5非赋值操作带来的重写564
6.5.1.6条件化声明中的重写565
6.5.1.7运算优先级与引用的暂存566
6.5.2原型重写567
6.5.3构造器重写569
6.5.3.1重写Object()569
6.5.3.2使用类声明来重写571
6.5.3.3继承关系的丢失572
6.5.4对象成员的重写573
6.5.4.1成员重写的检测574
6.5.4.2成员重写的删除575
6.5.4.3成员重写对作用域的影响576
6.5.5引擎对重写的578
6.5.5.1this与super等关键字的重写579
6.5.5.2语句中的重写580
6.5.5.3结构化异常处理中的重写580
6.6动态执行582
6.6.1eval()作为函数名的特殊性582
6.6.2eval()在不同上下文环境中的效果584
6.6.2.1eval使用全局环境584
6.6.2.2eval使用对象闭包或模块环境585
6.6.2.3eval()使用当前函数的闭包585
6.6.3Eval环境的独特性586
6.6.3.1默认继承当前环境的运行模式587
6.6.3.2例外:obj.eval()的特殊性588
6.6.3.3执行代码可以自行决定运行模式589
6.6.3.4声明实例化过程与其他可执行结构不同591
6.6.3.5环境的回收592
6.6.4动态执行过程中的语句、表达式与值593
6.6.5序列化与反序列化595
6.6.5.1在对象与函数上的596
6.6.5.2对象深度与循环引用597
6.6.5.3不太现实的替代品599
6.6.6eval对作用域的影响600
6.6.7其他的动态执行逻辑601
6.6.7.1动态创建的函数601
6.6.7.2模板与动态执行603
6.6.7.3宿主的动态执行逻辑604
6.7动态方法调用(call、apply与bind)605
6.7.1动态方法调用以及this引用的管理605
6.7.2丢失的this引用608
6.7.3bind()方法与函数的延迟调用610
6.7.4栈的可见与修改612
6.7.5严格模式中的this绑定问题614
6.8通用执行环境的实现615
6.8.1通用DSL的模型616
6.8.1.1概念设计616
6.8.1.2被依赖的基础功能616
6.8.1.3一个基本实现619
6.8.1.4应用示例621
6.8.1.5其他623
6.8.2实现ECMAScript引擎624
6.8.2.1简单入手624
6.8.2.2引擎中的环境625
6.8.2.3对用户代码的语法分析628
6.8.2.4执行前的准备工作630
6.8.2.5从语法树节点开始执行631
6.8.2.6数据的交换633
6.8.2.7上下文的使用与管理634
6.8.3与DSL的概念整合635
第7章JavaScript的并行语言特性638
7.1概述638
7.1.1并行计算的思想638
7.1.1.1并行计算范型的抽象639
7.1.1.2分布与并行逻辑639
7.1.1.3并发的讨论背景640
7.1.1.4分支也可以不是时序逻辑641
7.1.2并行程序设计的历史642
7.1.2.1从“支持并行”到并行程序语言643
7.1.2.2用并发思想处理数据的语言643
7.1.2.3多数传统程序设计语言是“伪并行”的644
7.1.2.4真正的并行:在语言层面无视时间644
7.1.3并行语言特性在JavaScript中的历史645
7.2Promise的核心机制647
7.2.1Promise的核心过程647
7.2.1.1Promise的构造方法647
7.2.1.2需要清楚的事实:没有延时648
7.2.1.3Then链649
7.2.1.4Then链中promise2的置值逻辑650
7.2.1.5Then链对值的传递以及.catch()处理652
7.2.2Promise类与对象的基本应用654
7.2.2.1Promise的其他类方法654
7.2.2.2Promise.resolve()处理thenable对象的具体方法656
7.2.2.3promise对象的其他原型方法658
7.2.2.4未捕获异常的promise的检测660
7.2.2.5特例:将响应函数置为非函数662
7.2.3Promise的子类663
7.2.3.1由Promise()派生的子类663
7.2.3.2thenable对象或其子类664
7.2.4执行逻辑666
7.2.4.1任务队列666
7.2.4.2执行栈667
7.3与其他语言特性的交集668
7.3.1与函数式特性的交集:异步的函数669
7.3.1.1异步函数的引入669
7.3.1.2异步函数的值670
7.3.1.3异步函数中的await671
7.3.1.4异步生成器函数673
7.3.1.5异步生成器函数中的await674
7.3.1.6异步生成器函数与forawait.of语句676
7.3.2与动态特性的交集677
7.3.2.1await在语义上的特点.677
7.3.2.2resolve行为与类型模糊678
7.3.2.3then方法的动态绑定679
7.3.2.4通过接口识别的类型(thenable)680
7.3.2.5通过动态创建函数来驱动异步特性682
7.3.3对结构化特性带来的冲击683
7.3.3.1对执行逻辑的再造683
7.3.3.2迟来的finally.684
7.3.3.3newFunction()风格的异步函数创建686
7.3.3.4异步方法与存取器687
7.4JavaScript中对并发的支持690
7.4.1Agent、AgentCluster及其工作机制691
7.4.1.1工作线程及其环境691
7.4.1.2线程及其调度692
7.4.1.3与谁协商693
7.4.1.4多线程的可计算环境694
7.4.1.5通过消息通信完成协商695
7.4.2SharedArrayBuffer698
7.4.3Atomics701
7.4.3.1锁701
7.4.3.2置值:锁的状态切换704
7.4.3.3其他原子操作705
7.4.3.4原子操作中的异常与锁的释放705
7.5在分布式网络环境中的并行执行706
7.5.1分布式并行架构的实践707
7.5.1.1N4C的背景707
7.5.1.2N4C的架构设计707
7.5.1.3N4C架构的实现708
7.5.2构建一个集群环境709
7.5.2.1N4C集群与资源中心的基本结构709
7.5.2.2启动集群711
7.5.2.3在集群中创建任务中心712
7.5.2.4将计算节点加入集群713
7.5.3使用PEDT执行并行任务713
7.5.3.1本地任务、远程任务与并行任务714
7.5.3.2使用PEDT来管理并行任务714
7.5.3.3任务的执行715
7.5.3.4并行的方法716
7.5.4可参考的意义718
附录A术语表719
附录B参考书目723
附录C图表索引725
附录D本书各版次主要修改731
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网