JavaScript核心概念及实践

出版社:人民邮电出版社
出版日期:2013-5-1
ISBN:9787115313515
作者:邱俊涛
页数:250页

作者简介

本书不仅帮助读者迅速掌握JavaScript基础知识和核心技术,而且通过实例讲解如何将这些知识和技术理解应用到实际工作中,提升编程能力,以简洁、优美的代码开发出功能强大且更易于维护和扩展的应用程序。
全书共16章和两个附录,可以分为两个部分。第一部分包括第1章到第7章,侧重介绍JavaScript语言的核心概念,为读者学习后续内容打下牢固基础;这部分介绍了JavaScript的对象、函数、数组、正则表达式、闭包等主题,以及相关的重要知识点。 第二部分包括第8章到第16章,着重讨论了JavaScript支持的编程范式、核心概念的延伸、JavaScript的前端开发框架、测试框架、JavaScript引擎、JavaScript在Java,C、C++等应用中的使用,以及服务器端的JavaScript应用。这部分内容更注重实例,帮助读者将核心概念引用到实际工作中。附录A介绍了一些常用JavaScript技巧;附录B简单介绍了jQuery并给出了一个应用实例。
本书可以供JavaScript初学者阅读,以快速学习和掌握这门语言的核心内容:对于有一定经验的JavaScript程序员,则可以通过本书加深和拓展对JavaScript的认识,提升应用开发能力。

书籍目录

目 录
第1章 概述
1
1.1 JavaScript简史
1
1.1.1 动态网页
1
1.1.2 浏览器之战
2
1.2 JavaScript语言特性
3
1.2.1 动态性
3
1.2.2 弱类型
5
1.2.3 面向对象
6
1.2.4 解释与编译
7
1.3 JavaScript应用范围
7
1.3.1 客户端JavaScript
7
1.3.2 服务器端JavaScript
10
1.3.3 其他应用中的JavaScript
12
第2章 基本概念
16
2.1 数据类型
16
2.1.1 数据类型
16
2.1.2 对象类型
17
2.1.3 基本类型与对象间的转换
18
2.1.4 类型的判断
20
2.2 变量
21
2.2.1 基本类型和引用类型
21
2.2.2 变量的作用域
22
2.3 运算符
23
2.3.1 中括号运算符([])
23
2.3.2 点运算符(.)
24
2.3.3 相等与等同运算符
25
第3章 对象
28
3.1 JavaScript对象
28
3.1.1 对象的属性
29
3.1.2 属性与变量
29
3.1.3 原型对象及原型链
30
3.1.4 this指针
32
3.2 使用对象
33
3.3 对象字面量
34
3.4 JSON
36
第4章 函数
38
4.1 函数对象
38
4.1.1 创建函数
38
4.1.2 函数的参数
40
4.2 函数作用域
41
4.2.1 词法作用域
41
4.2.2 调用对象
43
4.3 函数上下文
44
4.4 call和apply
44
4.5 使用函数
45
4.5.1 赋值给一个变量
45
4.5.2 赋值为对象的属性
46
4.5.3 作为参数传递
46
4.5.4 作为函数的返回值
47
第5章 数组
48
5.1 数组的特性
48
5.2 使用数组
50
5.2.1 数组的基本方法使用
50
5.2.2 删除数组元素
53
5.2.3 遍历数组
55
第6章 正则表达式
57
6.1 正则表达式基础概念
57
6.1.1 元字符与特殊字符
58
6.1.2 范围及重复
58
6.1.3 分组与引用
61
6.2 使用正则表达式
62
6.2.1 创建正则表达式
62
6.2.2 String中的正则表达式
64
6.3 实例:JSFilter
65
第7章 闭包
67
7.1 闭包的特性
67
7.2 闭包的用途
69
7.2.1 匿名自执行函数
69
7.2.2 缓存
70
7.2.3 实现封装
71
7.3 应该注意的问题
72
7.3.1 内存泄漏
72
7.3.2 上下文的引用
73
第8章 面向对象的JavaScript
75
8.1 原型继承
75
8.1.1 引用
77
8.1.2 new操作符
78
8.2 封装
79
8.3 工具包Base
80
8.4 实例:事件分发器
83
第9章 函数式的JavaScript
92
9.1 匿名函数
93
9.2 高阶函数
93
9.2.1 JavaScript中的高阶函数
94
9.2.2 C语言中的高阶函数
95
9.2.3 Java中的高阶函数
96
9.3 闭包与柯里化
97
9.3.1 柯里化的概念
98
9.3.2 柯里化的应用
98
9.4 一些例子
99
9.4.1 函数式编程风格
99
9.4.2 Y-结合子
101
9.4.3 其他实例
103
第10章 核心概念深入
104
10.1 原型链
104
10.1.1 原型对象与原型链
104
10.1.2 构造器
107
10.2 执行期上下文
108
10.3 活动对象
111
10.4 作用域链
111
10.5 this值
113
10.5.1 词法作用域
113
10.5.2 this的上下文
114
第11章 客户端的JavaScript
116
11.1 客户端JavaScript执行环境
116
11.2 文档对象模型(DOM)
117
11.3 事件驱动模型
118
11.4 与服务器端交互(Ajax)
119
11.5 调试
122
11.5.1 FireFox
122
11.5.2 Chrome
124
11.6 客户端的MVC
126
11.7 JavaScript/Ajax框架
128
第12章 客户端的MVC框架:Backbone.js
130
12.1 Backbone背景简介
130
12.1.1 Backbone模型
131
12.1.2 Backbone集合
132
12.1.3 Backbone视图
133
12.1.4 Backbone路由
134
12.2 Backbone实例1:使用客户端本地存储
135
12.2.1 客户端存储
135
12.2.2 运行结果
136
12.2.3 数据模型
137
12.2.4 视图及模板
137
12.3 Backbone实例2:与服务器端交互
141
12.3.1 后台服务
141
12.3.2 客户端代码修改
142
第13章 JavaScript测试
144
13.1 单元测试框架QUnit
144
13.1.1 QUnit简介
144
13.1.2 QUnit示例
144
13.2 Jasmine
150
13.2.1 Jasmine基本概念
151
13.2.2 Jasmine的spy
155
13.2.3 Jasmine 实例
159
13.2.4 测试复杂的场景
162
第14章 JavaScript引擎
165
14.1 使用SpiderMonkey
165
14.1.1 SpiderMonkey简介
165
14.1.2 JavaScript对象与C对象间的转换关系
166
14.1.3 基本代码模板
167
14.1.4 执行JavaScript代码
170
14.1.5 C程序调用JavaScript函数
172
14.1.6 JavaScript程序调用C函数
173
14.1.7 在C程序中定义JavaScript对象
175
14.2 SpiderMonkey的实现简介
177
14.2.1 虚拟机概述
177
14.2.2 SpiderMonkey体系结构
177
14.2.3 jsval类型
178
14.2.4 对象
179
14.3 V8引擎概览
179
14.3.1 V8引擎基本概念
179
14.3.2 V8引擎使用示例
181
14.3.3 使用C++变量
181
14.3.4 调用C++函数
183
14.3.5 使用C++类
184
第15章 Java应用中的JavaScript
188
15.1 脚本化基础
188
15.2 使用Rhino引擎
189
15.2.1 直接对脚本求值
189
15.2.2 传递Java对象
190
15.2.3 调用脚本内的函数
191
15.2.4 在脚本中使用Java资源
193
15.2.5 实现Java接口
194
15.3 实例:sTodo
195
15.3.1 sTodo简介
195
15.3.2 sTodo的插件机制
197
15.3.3 sTodo中的脚本
199
15.4 实例:可编程计算器phoc
201
15.4.1 phoc简介
201
15.4.2 phoc中的脚本
203
第16章 服务器端的JavaScript
207
16.1 node.js
207
16.1.1 node.js简介
207
16.1.2 node.js 使用示例
208
16.1.3 node.js实例
211
16.1.4 使用Jasmine测试
215
16.2 CouchDB
217
16.2.1 CouchDB简介
217
16.2.2 CouchDB使用
218
16.2.3 CouchDB实例
220
16.3 MongoDB
227
16.3.1 基本操作
227
16.3.2 map/reduce
230
附录A 一些JavaScript技巧
232
A.1 创建对象
232
A.2 访问对象的属性
232
A.3 遍历对象
233
A.4 名称空间
234
附录B 前端JavaScript框架:jQuery
236
B.1 jQuery简介
236
B.2 jQuery基础
239
B.2.1 jQuery选择器
239
B.2.2 对DOM的操作
241
B.2.3 对CSS的操作
242
B.2.4 事件处理
244
B.2.5 实用函数
246
B.3 jQuery实例
247

编辑推荐

JavaScript是Web应用开发的主流语言,并且业已成为事实上的行业标准。本书侧重介绍JavaScript核心技术和当前热门的库和开发框架。JavaScript核心概念及实践作者来自知名IT公司ThoughtWorks。作者最早在网络上历时三年发布和写作了“JavaScript内核”系列系列技术文章,累计访问和下载过万,颇受好评。JavaScript核心概念及实践得到阮一峰、拔赤、汤姆大叔、张凯峰等知名JavaScript技术专家、作译者和程序员推荐。

内容概要

邱俊涛,ThoughtWorks软件工程师。喜欢编程,尤其喜欢编程带来的成就感。对动态语言、函数式编程等有浓厚的兴趣。喜欢开源软件,喜欢知识分享,并从他人的分享中学习。崇尚简单、轻量的设计和模式。个人主页:http://icodeit.org。微博:@正反反长。

媒体关注与评论

讲述JavaScript的图书在市面上可谓汗牛充栋,而且很多都是广为传颂的大牛书。但俊涛的这本书仍然让我眼前一亮,除了出自原创的原因,更重要的是,这本书中没有过多沉湎于JavaScript的语法细节,而是更多地从代码和实战的角度去讲解JavaScript中相对复杂的概念,比如闭包、原型链、this等,让读者可以借此对晦涩的概念有清晰的认识。本书所涉及的自动化测试、函数式编程、客户端和服务器端JavaScript、渲染引擎方面的内容,是其他JavaScript书籍鲜有覆盖的方面,我认为也是这本书最大价值所在。这就像是为广大开发者打开了一扇窗,让读者自拔于琐细的语法和标准的纠结,从更大的视角看待JavaScript在整个软件系统开发中的价值和定位。     ——张凯峰,ThoughtWorks程序员本书着重于重点概念和实际应用,对比多种语言,分析JavaScript的语法特点;紧密贴近编程实践,大量的示例来自真实的项目;从方法论的角度,探讨JavaScript编程思想;涉及函数式编程、继承机制的内部实现、客户端MVC、代码测试、与Java交互、编译引擎、node.js+NoSQL开发等深具实战价值的高级主题,是一本难得的、完全原创的专著。——阮一峰,知名博主,《黑客与画家》译者这本书直入主题地讲解了JavaScript的关键的核心知识点,这些是实战中最为常用的知识点,书中所配备的实例也清晰易懂,本书非常适合入门阅读。—— 李晶 花名拔赤,淘宝前端工程师,《JavaScript权威指南(第6版)》和《编写可维护的JavaScript》译者非常好的一本进阶书籍,丰富的例子让你充分了解JavaScript,初中级读者想要成为真正的前端开发工程师,本书将为你铺垫一条明畅之路。——徐涛,网名“汤姆大叔”,知名JavaScript专家,《JavaScript编程精解》译者

名人推荐

讲述JavaScript的图书在市面上可谓汗牛充栋,而且很多都是广为传颂的大牛书。但俊涛的这本书仍然让我眼前一亮,除了出自原创的原因,更重要的是,这本书中没有过多沉湎于JavaScript的语法细节,而是更多地从代码和实战的角度去讲解JavaScript中相对复杂的概念,比如闭包、原型链、this等,让读者可以借此对晦涩的概念有清晰的认识。 本书所涉及的自动化测试、函数式编程、客户端和服务器端JavaScript、渲染引擎方面的内容,是其他JavaScript书籍鲜有覆盖的方面,我认为也是这本书最大价值所在。这就像是为广大开发者打开了一扇窗,让读者自拔于琐细的语法和标准的纠结,从更大的视角看待JavaScript在整个软件系统开发中的价值和定位。 ——张凯峰,ThoughtWorks程序员

章节摘录

版权页:   插图: 


 JavaScript核心概念及实践下载 精选章节试读 更多精彩书评



发布书评

 
 


精彩书评 (总计3条)

  •     讲述JavaScript的图书在市面上可谓汗牛充栋,而且很多都是广为传颂的大牛书。但俊涛的这本书仍然让我眼前一亮,除了出自原创的原因,更重要的是,这本书中没有过多沉湎于JavaScript的语法细节,而是更多地从代码和实战的角度去讲解JavaScript中相对复杂的概念,比如闭包、原型链、this等,让读者可以借此对晦涩的概念有清晰的认识。 本书所涉及的自动化测试、函数式编程、客户端和服务器端JavaScript、渲染引擎方面的内容,是其他JavaScript书籍鲜有覆盖的方面,我认为也是这本书最大价值所在。这就像是为广大开发者打开了一扇窗,让读者自拔于琐细的语法和标准的纠结,从更大的视角看待JavaScript在整个软件系统开发中的价值和定位。 ——张凯峰,ThoughtWorks程序员
  •     本书着重于重点概念和实际应用,对比多种语言,分析JavaScript的语法特点;紧密贴近编程实践,大量的示例来自真实的项目;从方法论的角度,探讨JavaScript编程思想;涉及函数式编程、继承机制的内部实现、客户端MVC、代码测试、与Java交互、编译引擎、node.js+NoSQL开发等深具实战价值的高级主题,是一本难得的、完全原创的专著。 ——阮一峰,知名博主,《黑客与画家》译者 这本书直入主题地讲解了JavaScript的关键的核心知识点,这些是实战中最为常用的知识点,书中所配备的实例也清晰易懂,本书非常适合入门阅读。 —— 李晶 花名拔赤,淘宝前端工程师,《JavaScript权威指南(第6版)》和 《编写可维护的JavaScript》译者 非常好的一本进阶书籍,丰富的例子让你充分了解JavaScript,初中级读者想要成为真正的前端开发工程师,本书将为你铺垫一条明畅之路。 ——徐涛,网名“汤姆大叔”,知名JavaScript专家,《JavaScript编程精解》译者
  •     为了避免传达错误的信息,先声明一下:本文没想黑这本书,只是想协助它提高质量。原本作者在JavaEye连载《JavaScript内核系列》的时候就有读过,大概内容的层次心里已经有数。进化为实体书后质量已经颇有提升。http://abruzzi.iteye.com/blog/646947怎么说呢…感觉是粗读感觉良好,细抠直想吐槽 >_<如果不是特别在意细节问题,这系列文章和这本书不妨一读。本来很多核心概念直接读ECMAScript规范就能理解清楚了,但喜欢或者说习惯读规范的同学不多;大家似乎更喜欢读别人消化过规范后写的“讲解”。同类的文章我可能会更推荐的是Dmitry Soshnikov写的ECMA-262-3 in detail 和 ECMA-262-5 in detail系列: http://dmitrysoshnikov.com/ecmascript/拿到实书后粗略读了一次。赞美之词啥的在作者原本的连载系列里也可以找到,后面肯定也还会有人赞,这里就不多写啥赞了。有一点得赞一下:作者原本连载的时候这系列叫做《JavaScript内核系列》,而成书后改名为《JavaScript核心概念及实践》。这名字改得好,比原来的名字更符合书中内容。另外我喜欢这本书的一点是文风朴实,直入主题,读起来很省力。不像某些糟糕的书一堆主观牢骚发完之后没留下啥营养(如《Modern JavaScript》 http://book.douban.com/subject/7070623/ )。这本书相对其它国内的JavaScript书比较有特点的是第14、15章,讲述如何在自己的应用中嵌入SpiderMonkey、V8、Rhino用作脚本引擎。比较实用。虽然这三个引擎的官方文档都有详细说明如何嵌入它们,但我读过的其它国内出的JavaScript书很少提及这部分话题。下面贡献个bug报告。针对该书的2013年5月第1版第1次印刷的状态。希望后面的印刷能修正这里提到的部分问题吧。主要都是些细节而已。取决于读者对细节的认真程度,这些可以算是“无伤大雅”吧…前言、第一章等地方都没有提到这本书所描述的JavaScript遵循的是哪个版本的ECMAScript规范。从内容可以推断作者想写的是ECMAScript 3的。应该显式说明。另外在提到某些具体实现,像SpiderMonkey、V8、Rhino之类的时候,应该明确指出其版本。不然读者可能会发现书中所说的跟现在可以获取的最新版不一样,而感到困惑。前言Page 3Array不是ECMAScript的保留字,而只是一个内建类型而已。ECMAScript 5th, 7.6.1规定了保留字的列表。http://www.ecma-international.org/ecma-262/5.1/#sec-7.6.1前言Page 4前Sun的Rhino=> Mozilla Rhino在Rhino的开发过程中Sun只提供了少量技术支持;把Rhino整合进JDK6时Sun也只做了少量剪裁。所以Rhino不能算是Sun的。前言Page 5JSEvaluator 大小写统一Page 21.1.2为啥这段看不出浏览器之战跟JavaScript的关系…应该带过一下的。Page 4代码例子没有区分代码与运行结果Page 5最顶上的代码例子是不是漏了delete obj.property; 之类的?1.2.2这小节所讲的都不是“弱类型”而是“动态类型”的特点。作者掉进了一个经典坑里。JavaScript既是动态类型也是弱类型的,但这俩名词指的并不是同一件事。Page 7“在JavaScript中一切都是对象”=> 在JavaScript中一切都可看作对象。1.2.4“”……无需解释“与”……无需编译“=> 这两句话接在一起感觉怪怪的。作者或许应该改改表述方式。“我们将在第9章和第10章对两种方式进行更深入的讨论”=> 这句话似乎是删漏了?Page 12goodbay=> goodbyeThunderBrid=> ThunderBirdPage 18Kernal=> KernelPage 19““重载”了Object的toString()方法”=> “重载”应该是“覆盖”Page 21Wrold=> WorldPage 22“引用指向的是地址,也就是说,引用不会指向引用本身,而是指向该引用所对应的实际对象。”这句话读着太别扭了。其实要说的就是:引用里存的值是对象地址而不是对象的实际内容。Page 23结合率=> 结合律另外书中“运算符”与“操作符”其实说的是同一件事,但前后没统一起来。例如说第33页3.2、第78页的8.1.2写的是“new操作符”。应该统一选其中一种说法。Page 293.1.1 这段描述较接近ECMAScript 3的规定,但现在的主流标准已经是ECMAScript 5.1,属性并不只是个值了。Named property有两种,一个是named data property,就跟ECMAScript 3里的属性一样;另一种是named accessor property,这个是新的。Page 30全局变量在创建的时候确实会同时触发创建同名的全局对象的属性,但全局变量与全局对象的属性并不完全等价,有很细微的差别:用var声明的全局变量,创建出来的全局对象的属性的内部属性[Configurable]为false,所以这个属性不能delete。不用var声明就直接赋值创建出来的全局对象的属性的内部属性[Configurable]为true,所以这个属性可以delete。以前也有人解释过,参考这里 http://stackoverflow.com/questions/12692887/are-the-terms-global-property-and-global-variable-synonyms原型不是JavaScript特有的概念。这块设计受Self语言的影响。而Self采用基于原型而不是基于类的面向对象模型又是80年代末的一种学界潮流。Page 31“继承及重载”=> 应该是“继承及覆盖”。重载是overload,覆盖才是overridePage 35这页的point例子很糟糕诶:function point(left, top) {this.left = left;this.top = top;// handle the left and topreturn { x: this.left, y: this.top };}var pos = point(3, 4);这样就把left和top都写到全局对象上了…是个典型错误。后面一个代码例子里的json应该改为obj之类的,避开json这个词。漏网之鱼吧?Page 363.4 JSON“可以表达任意复杂的数据形式”=> 这里应该提一下JSON无法表达自我引用的对象图。像这样:var obj = {self: null,name: "Me"}obj.self = obj;执行完这句赋值之后的对象图里包含一个自我引用,这种数据就无法用JSON来表示。类似的,如果要表达一颗树,树的父子节点间要有双向引用,那JSON也无法表达。回到完整的JavaScript对象字面量(注意不是JSON)语法,SpiderMonkey以前还有过叫做sharp variable的特殊语法用于支持带循环的或者其它非树形对象图的字面量,但在较新版本里已经去除了:http://whereswalden.com/2012/01/25/spidermonkey-no-longer-supports-sharp-variables/“而值可以是任意的JavaScript对象”=> 而值可以是除Function以外的任意JavaScript值书里其它地方也说了基本类型的值不是对象,这个地方应该避开“JavaScript对象”的说法。“简单对象String, Boolean, Number, Null“=> 应该写为”基本类型“。基本类型的值不是对象。Page 39最底下的结果里function ()应该是function p()才对。这个就算在SpiderMonkey上也应该显示函数名字。Page 47curring=> curryingPage 49“字符串也可以作为数组的下标”=> 这段后面的解释不够准确。作者没举个这样的例子:var a = [1, 2, 3];var i = a["2"]; //=> 3Page 52Cisio=> CiscoPage 54“扩展了JavaScript的内置对象Array”=> 扩展的是Array.prototype而不是Array。这俩是不同的对象。Page 55“但是不影响全局对象”=> 应该跟前文统一起来,写为“但是不影响Array.prototype,也就不会对Array的实例造成全局影响”之类的。Page 67“用简单的语句来描述JavaScript中闭包的概念”后面的那句=> 这句话感觉完全不对,前后不相关。函数内是否能定义函数,跟函数是对象、对象是属性的集合一点关系都没有。在函数内定义的函数是作为activation的属性,而不是作为函数对象的属性存在的。Page 727.3.1“一般采用的是引用计数的形式”=> 正好相反,能叫得上名字的JavaScript引擎都不曾用过引用计数作为自动内存管理的主要实现机制。大家都是一开始就用mark-sweep。请参考这里:http://hllvm.group.iteye.com/group/topic/37596实际上后面第178页介绍SpiderMonkey的时候作者也说了它用了标记-清除式GC…前后没对应上。Page 81“需要给Base.extend方法传入一个JSON对象”=> 作者应该在很多地方都改掉了原本误写为“JSON对象”的地方,这是漏网之鱼?可以参考原本没改掉误用“JSON”一词时的状态:http://hzjavaeyer.group.iteye.com/group/wiki/2272-JavaScript-CorePage 92“函数的运算对外部无副作用”=> 数学上的函数是这样,但JavaScript的不是。其实后面紧接着的例子稍微改改就可以体现出副作用了:var outter = function () {var x = 0;return {printMe: function () {print("x = " + x);},incr: function () {return x++;}}}var a = outter();print(a.incr()); // 0a.printMe(); // 1print(a.incr()); // 1a.printMe(); // 2这样修改过的例子里,printMe和incr两个函数捕获的是同一个环境,因而会共享状态。副作用会在共享捕获的环境的函数间可见。这算不算“外部”呢?(咦?豆瓣的书评里加不了格式…代码缩进全被吞了orz)Page 93“这两个语句的意义是一样的”=> 严谨说是“几乎一样”。function declaration会被提升而var赋值的function expression不会。例子很简单,像这样的一段顶层代码:foo(); //=> okbar(); //=> TypeError: undefined is not a functionfunction foo() { }var bar = function () { }Page 102“成为Y-结合子”=> 称为Y-结合子Page 104原型属性是一种内部属性。ECMAScript规范说了内部属性没有名字,在规范中使用一些特殊名字来指定内部属性。原型属性的特殊名字是[Prototype]。用这个是最准确的。__proto__只是某些JavaScript引擎的实现细节,不过很多书啊啥的都喜欢就直接用__proto__这个名字,也罢。紧接着后面的例子在对象字面量里用了__proto__属性,这就不太好。ECMAScript 5用Object.create()来指定prototype创建对象是比较靠谱的做法。Page 107Obejct=> ObjectPage 109golbal=> globalPage 112[scope]=> [Scope]另外从2010年中开始,SpiderMonkey也不再支持__parent__属性了http://whereswalden.com/2010/05/07/spidermonkey-change-du-jour-the-special-__parent__-property-has-been-removed/Page 165JavaSccript=> JavaScriptSpidlerMonkey=> SpiderMonkey这页里“解析、执行JavaScript代码”的写法乍看感觉不太好,但想想也没写错。本来是想说“解析”应该是“解释”,但作者在这里的本意似乎就是说parse,用“解析”是对的。Page 166alter=> alertPage 17714.2“SpiderMonkey是一个C语言实现的JavaScript引擎”=> 作者当时写这段的时候SpiderMonkey或许还是用C实现的,但现在的SpiderMonkey已经整个改为用C++实现了(dtoa.c是少有的还在用.c后缀的例外)。14.2.1“一般而言,编程语言的虚拟机是针对某种指令的解释器”=> 这个…显然虚拟机不一定要用解释方式来实现。紧接着后面介绍的V8里就没解释器啊。14.2.2“SpiderMonkey引擎是一个快速的解释器,也就是一个虚拟机”=> 不知道该如何吐槽好…大概不要“也就是”就好了。ECMA 262-3=> ECMA-262 5th这个大概是作者原文成文的时候SpiderMonkey还没宣称自己实现了第5版规范吧。SpiderMonkey是从2009年底开始逐步向第5版规范靠拢的。Page 179提到V8实现ECMA-262-3的地方也是,现在的V8实现的是ECMAScript 5.1,外加少量ECMAScript Harmony的功能。Page 189在介绍嵌入Rhino时应该提一下JSR 223。javax.script包下的API都是JSR 223引入的。Page 191invoceFunction=> invokeFunctionPage 232A.1提倡用字面量是好的。但要说“new关键字在JavaScript里表示的含义与在传统的面向对象的语言中的含义完全不同”感觉不对。JavaScript的new表达式的抽像意图与Java/C#之类的new一样:1、创建空的新对象,进行默认初始化2、调用构造器,进行用户指定的初始化只是细节不同而已。JavaScript里,能跟在new后面的那个叫做“构造器”。只不过所有在JavaScript里声明的函数都可以当作构造器用,所以看似new是“作用于函数”(书中第78页),但实际上这里应该区分开构造器与函数的概念。JavaScript同时还允许宿主环境提供宿主函数,而这些函数就有可能不能当作构造器使用,此时构造器与函数的区别就表现出来了。有实现内部属性[Construct]的对象才可以用作构造器:http://www.ecma-international.org/ecma-262/5.1/#sec-11.2.2就算Java与C#的new在细节上也不是完全一样。不知道书中这个“完全不同”指的是哪个层面上完全不同。A.2光介绍eval可以用但不说eval有啥坑略危险…大概就先这样。

精彩短评 (总计15条)

  •     书中的知识点比较全面,讲解也很到位。 下面是自己简单梳理的内容: JavaScript是动态语言、弱类型、基于原型的 JavaScript的MVC模式,降低整个前端开发端的耦合度,提高事个前端的开发效率。Backbone.js框架 单元测试框架:QUnit,Jasmine:测试框架,支持BDD
  •     算上感情分给到4星?写了评论在 http://book.douban.com/review/5960403/
  •     新手值得一读
  •     比较实用,书本内容不多,但涵盖广泛,所以很多js的知识没有面面俱到,但已经很不错了,例子很丰富
  •     看了目录,不值得读....对于我来说...
  •     正在学习中,以前都是实践中学会的js 现在系统的学一下 。可以很快的提高自己。这本书志在必得
  •     中国人写的,不错。
  •     http://abruzzi.iteye.com/blog/646947
  •     这样体量的书里塞进16章内容,可以想象理论讲解的部分基本无法深入,部分章节还给人拼凑的感觉。不过全书最宝贵的地方在于配合理论讲解的实践案例,都很有代表性和启发性。
  •     首先作者很帅,其次书中章节划分也不错。但是仔细一看,会发现里面有很多的印刷错误,感觉校对工作很欠缺;某些知识点的讲解不够清晰,深入。
  •     原理和实例都很到位,不过关于事件的章节是不是写的少了点?
  •     希望能在某些点上深入讲解
  •     这本书还是不错的。没有从基础语法开始介绍,介绍的真正是“核心概念”,看得出是作者的经验总结。另外,实践部分介绍了一些框架与库,虽然不是很详细,但对他们也能有个大体的认识,知道他们是干什么用的。 对 Ch06(正则表达式),CH12(客户端的MVC框架 Backbone.js),Ch13(单元测试框架QUnit和Sasmine),Ch15(Java应用中的JavaScript),Ch16(服务器端的JavaScript Node.js),附录B(前段JavaScript框架 jQuery)。只大概浏览了一下,具体实例没有阅读,感觉这些内容,在需要的时候可以找专门的书籍阅读,可能介绍的更详细。
  •     整体上的简介看着不错。有些内容的理解很不自然。几个例子是抄的。
  •     12章开始之后、附录之前的内容,对目前的我来说基本没用。也就没看了。其他部分,对帮助自己理解JS的闭包等概念还是很有效果的。
 

农业基础科学,时尚,美术/书法,绘画,软件工程/开发项目管理,研究生/本专科,爱情/情感,动漫学堂PDF下载,。 PDF下载网 

PDF下载网 @ 2024