在一年一度的新春佳节即将到来之际,应热心读者的要求,为满足大家先睹为快的愿望,也为了答谢朋友们对本博客长期以来的支持,即日起到春节前夕,本站将发布尚未出版的《JavaScript高级程序设计(第2版)》一书的样章(暂定为3章,约115页)。

申请办法

1、发邮件到:lisf@turingbook.com。
2、邮件主题:《JavaScript高级程序设计(第2版)》样章;邮件内容:您的Email地址。
3、24小时内收到样章,先睹为快!

备注:样章格式为PDF,托管在“Google文件”,可以在线查看(无须登录),也可以下载和打印。希望在线查看PDF的朋友,请在邮件正文中注明“希望接收Google文件”字样,即可收到样章的链接(也可以下载);否则,将收到PDF文件(*请确保有5M以上的空余邮箱空间)
样章列表(详细目录

第3章 基本概念
第4章 变量、作用域及内存问题
第5章 引用类型

《JavaScript高级程序设计(第2版)》简介

本书是人民邮电出版社图灵公司引进出版的大畅销书、JavaScript权威著作《JavaScript高级程序设计》的最新升级版。《JavaScript高级程序设计》自2006年11月出版以来,已经累计销售逾30000册,而且至今仍然十分畅销。这一点可以通过北京新华文化发展有限公司(新华书店)近期的店面销售数据看出来(大家可以自行比较一下其他畅销书的销量)。应该说,在Web 2.0革命爆发的同时,人民邮电出版社图灵公司引进出版的本书成就了计算机图书市场上难得一见的奇迹。

本书作者尼古拉斯·扎卡斯(Nicholas C. Zakas)现为Yahoo!公司首席前端工程师,世界顶级Web技术专家。原书第1版曾被选为Yahoo!公司YUI(Yahoo! User Interface Library,Yahoo!用户界面库)团队的内部培训教材。

2009年初,本书第2版面世(《Professional JavaScript for Web developers, 2nd Edition》)。新版本不仅篇幅由原来的600多页增加到800页,而且几乎全部更新、重写了上一版的内容,删除了上一版中与今天的职业需求无关的主题,新增了大量比上一版更有价值、更能反映JavaScript最新发展成果的内容。从颇具深度的JavaScript语言基础到作用域(链),从JavaScript引用类型到面向对象编程的最佳实践,从极其灵活的匿名函数到闭包的内部机制,从浏览器对象模型(BOM)到客户端检测,从文档对象模型(DOM)到基于事件的Web脚本编程,从错误处理到前端调试,从XML(E4X)到Ajax及JSON,从高级前端开发技术到前沿的客户端存储,从最佳编程实践到展望即将成为现实的API,直至JavaScript未来的发展。全书彻底涵盖了JavaScript技术的各个方面,几乎涉及到了Web前端开发的每一处细节。可以预见,这部著作一定会成为Web前端开发人员不可多得的又一部经典。

目前,《JavaScript高级程序设计(第2版)》的翻译工作已经进入后期阶段(全书22章,所剩不到5章)。而且,为确保新版及时上市与读者见面,出版社采取了与译者同步翻译、同步编辑审校的特别措施。新版本预计2010年上半年可以上市;当然,在确保出版品质的前提下一定会尽量往前赶!

样章详细目录

第3章 基本概念 1
3.1 语法 1
3.1.1 区分大小写 1
3.1.2 标识符 1
3.1.3 注释 2
3.1.4 语句 2
3.2 关键字和保留字 3
3.3 变量 4
3.4 数据类型 5
3.4.1 typeof操作符 5
3.4.2 Undefined类型 6
3.4.3 Null类型 7
3.4.4 Boolean类型 7
3.4.5 Number类型 8
3.4.6 String类型 14
3.4.7 Object类型 16
3.5 操作符 17
3.5.1 一元操作符 17
3.5.2 位操作符 20
3.5.3 布尔操作符 26
3.5.4 乘性操作符 29
3.5.5 加性操作符 30
3.5.6 关系操作符 32
3.5.7 相等操作符 34
3.5.8 条件操作符 35
3.5.9 赋值操作符 36
3.5.10 逗号操作符 36
3.6 语句 37
3.6.1 if语句 37
3.6.2 do-while语句 38
3.6.3 while语句 38
3.6.4 for语句 38
3.6.5 for-in语句 40
3.6.6 label语句 40
3.6.7 break和continue语句 41
3.6.8 with语句 42
3.6.9 switch语句 43
3.7 函数 45
3.7.1 理解参数 47
3.7.2 没有重载 48
3.8 小结 49

第4章 变量、作用域和内存问题 1
4.1 基本类型和引用类型的值 1
4.1.1 动态属性 2
4.1.2 复制变量值 3
4.1.3 传递参数 4
4.1.4 检测类型 6
4.2 执行环境及作用域 6
4.2.1 延长作用域链 9
4.2.2 没有块级作用域 10
4.2.3 声明变量 10
4.2.4 查询标识符 11
4.3 垃圾收集 12
4.3.1 标记清除 12
4.3.2 引用计数 13
4.3.3 性能问题 14
4.3.4 管理内存 15
4.4 小结 15

第5章 引用类型 1
5.1 Object类型 1
5.2 Array类型 3
5.2.1 转换方法 6
5.2.2 栈方法 7
5.2.3 队列方法 8
5.2.4 重排序方法 9
5.2.5 操作方法 11
5.3 Date类型 12
5.3.1 继承的方法 14
5.3.2 日期格式化方法 15
5.3.3 日期/时间组件方法 15
5.4 RegExp类型 17
5.4.1 RegExp实例属性 19
5.4.2 RegExp实例方法 19
5.4.3 RegExp构造函数属性 21
5.4.4 模式的局限性 23
5.5 Function类型 23
5.5.1 没有重载(深入理解) 25
5.5.2 函数声明与函数表达式 25
5.5.3 作为值的函数 26
5.5.4 函数内部属性 27
5.5.5 函数属性和方法 29
5.6 基本包装类型 31
5.6.1 Boolean类型 32
5.6.2 Number类型 33
5.6.3 String类型 35
5.7 内置对象 42
5.7.1 Global对象 43
5.7.2 Math对象 46
5.8 小结 49

注:最近,陆续收到读者来信,询问《jQuery基础教程》目前是第几次印刷。今在此一并回复:目前市面上销售的《jQuery基础教程》均为第4次印刷。为方便第1次印刷的读者,下面将第3次印刷时添加的“译者附注”公布于下,希望能对读者朋友有所帮助。

第3次印刷译者附注

本书自出版以来,受到了广大读者的热烈欢迎。本次印刷对第1次印刷中发现的错误和不妥之处进行了修订。同时,针对读者反馈中比较有代表性的问题,特作如下说明。

1. jQuery版本变化对本书的影响

本书英文原版在写作时,jQuery的最新版本是1.1。到了中文版出版时,jQuery 1.2已经发布了。由于新版本中的一些特性发生了变化,导致本书少量内容与新版本不一致,而且个别示例在新版本下不能运行。其中,主要是jQuery 1.2取消了对XPath选择符的支持(原因是XPath选择符可能会导致性能问题)。为确保使用新版本jQuery的读者能正常运行本书相关示例,现给出两种解决方案:第一种是继续使用XPath选择符,但必须下载Basic XPath插件,下载地址是http://plugins.jquery.com/project/xpath。插件实际上也是一段jQuery脚本,使用时把它贴到你自己编写的jQuery代码前面即可。这样,你的jQuery代码就可以支持XPath选择符了。第二种就是避免使用XPath选择符。对于本书个别示例中使用的XPath选择符,可以尝试把它们修改为其他等效的选择符——例如,把$(‘tr:not([th])’)修改为$(‘tr:not(:has(th))’)。

2. 阅读本书的背景知识

本书作为介绍流行JavaScript库——jQuery的全球第一部著作,内容丰富、通俗易懂,深受广大读者的喜爱,是学习jQuery的必读图书。但是,由于少数读者对HTML、CSS、JavaScript以及DOM的相关知识掌握还不十分全面,造成了在理解本书个别示例时的困难。如果读者感觉自身还缺少某方面的基础知识,可以结合相关技术书籍和本书共同学习,互为参考,以达到齐头并进的学习效果。在此,推荐人民邮电出版社出版的下列图书。

3. 推荐两个实用的小技巧

(1)有读者反映,在将示例中的提示换成中文时,在某些浏览器中显示不正常——显示乱码。这是一个在学习外版书时普遍存在的问题。由于国外作者保存示例代码文件(.js)或网页文件(.html)时,通常默认采用ANSI编码,而这种编码只支持西方字符。因此,如果要在代码或示例中使用中文,一定要记住把这个文件另存为UTF-8编码格式。

(2)从jQuery 1.2开始,Google为jQuery提供了CDN(Content Delivery Network,内容分发网络)支持,以便用户的浏览器从位于全球各地的Google服务器上就近加载jQuery。这是目前使用JavaScript库的一种最流行、最方便、最快捷的方式。如果读者在试验本书示例时不想把jQuery库下载到本地,也可以使用这种远程加载方式——只要把本书示例页面中的下面这行代码:<script src=”jquery.js”></script>

替换成以下代码即可:

<script src=”http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js” type=”text/javascript”></script>

当然,还有个前提,就是你的电脑必须连接到了互联网。

你在阅读和学习过程中,有任何问题,欢迎致信contact@turingbook.com

最后,祝你阅读愉快!

本书中文版(《Flex3实战》)将由人民邮电清华大学出版社出版。经出版方许可,现公开本书5章内容(篇幅相当于全书1/5),供读者预览。
这些“样章”均为未经编辑加工的译稿原件。虽经译者审校,但囿于时间精力所限,其中错误和问题在所难免。如果读者朋友发现了译稿中的错误和问题,麻烦您明确指出,经核实我们一定尽量及时纠正。
对反映问题最多的前3位读者,译者将于本书出版后第一时间,赠送新书一册,以为答谢。

查看全文 »

Tariq Ahmed

Tariq Ahmed

多年来,我一直都在找寻一种方式,一种能够带给用户更好的在线体验的方式。而且,这个找寻历程从Google革命性的Google Maps站点引起轰动之前就已经开始了。我的意思是说,Web用户在很长一段时间里,都不知道还能有什么更好的在线体验。

在把Web当作文档发布系统使用的若干年里,用户体验曾一度在强大的本地桌面应用和乏善可陈的HTML应用之间摇来摆去。但是,贫乏的用户体验并没有对HTML和Web构成冲击——Web作为平台中立的文档发布系统,事实上是非常名符其实的。开发人员和公司专注于Web是因为它支持快速应用程序开发,而用户之所以接受眼前的一切则是由于——嗨!Web应用程序就是这个样子的。真的就是这个样子吗?

有件事曾令我百思不得其解。每次点击都会导致后台系统执行许多代码,而结果反映到UI上却只是一点点变化。而比这更糟的则是对数据库服务器频繁密集的访问。对一名技术人员来说,解决这个问题最简便的办法就是多加内存、使用虚拟机装载,或者少花钱多采购一些杂牌服务器,然后大功告成。但是,我更关心用户要为此付出什么代价。他们会对Web应用程序中常见的点击加等候习以为常;而且,对UI也没有多大的操作自由。不错,可以使用JavaScript;然而,这只是在掌握更高级技术之前的选择。从投入产出角度讲,这样做往往得不偿失。

这时候,Java Applet和Flash问世了,而且乍一看它们正是我要找寻的东西。实际上,Applet作为一个解决方案并不合适,它的体积太大,下载也很慢,况且不能跨平台使用。Flash挺有希望的,可是在设计师的工作环境中创建企业级应用程序,仍然不免有缘木求鱼的味道。

我在eBay的知识管理部门工作期间,也遇到了相同的问题。我需要找到一种方式,能够抽象出数据的复杂性,并且能让用户在可视的环境中方便地操作这些数据。

既而,Flex在2004年发布了(最初是V1,很快就是V1.5)。我当时有权作出采用它的决定,我们的团队也因使用它而感受到了完全不一样的体验。当时,我就知道Flex前途无量。因为Flex应用程序既具有桌面应用程序的强大特性,又能满足软件团队快速开发的需求。

作为Flex支持者,我把推动Flex社区发展当作自己的一项使命。我创建了CFLEX.Net(www.cflex.net),并坚信这个社区的规模越大,通过知识和代码共享产生的反推力也将越大,借此就可以促进这项技术的更快普及。毕竟,强有力的支持网络可以降低在组织中引入新技术的风险。

作为较早采用Flex的人,我在学习Flex的过程中走过不少弯路。主要原因是当时缺少相关书籍和参考资料。这种局面在Flex 2发布后得到了改观,大量的学习资源开始涌现。

我在2005年底离开eBay加入Amcom Computer Services,并在那里创建和管理一个开发团队。同学习任何新技术一样,要熟练掌握Flex也不容易。因此,最好的办法就是不断提升技能。在培训开发人员使用Flex的过程中,我发现市面上的某些图书常常言不及义,很多显而易见的问题都没有提到。

为了进一步推动Flex社区的发展,我决定写作本书,希望它能解决读者经常会遇到的问题。本书一反按功能特性布局谋篇的常见模式,改为按创建应用程序的自然进程组织内容。我只在必要时介绍必要的知识,不会过早地讨论复杂主题。同时,着意缩短的示例代码,也将有助于读者理解和上手。另外,我还发现把新事物与已知事物联系起来,可以增强学习效果。因此,在适当的情况下,我会尽可能拿其他技术的实现原理来进行类比。

希望读者通过阅读本书能够深入理解Flex,并最终加入到Flex社区中——因为届时你也能够向周围的人共享自己的知识和经验。

而现在,则是准备学习Flex的时候。随着社区逐步发展壮大,越来越多第三方厂商会发布与Flex有关的技术,Flex用户组也会在世界各地不断涌现。

随着其他厂商的先后跟进,RIA领域将迅速升温——Adobe再次证明自己走在了前列。我们正处于一个令人振奋的时代!以HTML为基础的Web应用程序始终会占有一席之地;然而,现在是该把你的技能提升到一个新高度的时候了。因为,这个产业的向前发展不会以个别人的意志为转移。

现在请坐下,系好安全带,旅行就要开始了!

TARIQ AHMED

作者简介:

TARIQ AHMED是一位Web应用程序的先驱人物,先后向Bell Canada和Reuters等公司引荐了下一代Web技术。他和Jon Hirschi最早将Adobe Flex引入eBay;随后又被其他项目采用。作为Adoble Flex社区专家,Tariq始终致力于推广这一技术并通过各种项目为社区提供支持。另外,Tariq因他的Community Flex (CFLEX.Net)站点而广为人知。Tariq目前是位于美国于旧金山湾区的Amcom Technology公司的产品开发经理。

JON HIRSCHI自第一个版本开始就致力于Flex的改进。作为Adobe Flex社区专家,他一直通过自己的博客、技术杂志文章和用户组共享其具有专家视角的观点。Jon不仅向eBay引荐了Flex,而且也是eBay负责管理服务器的前沿控制中心的一员。Jon目前是位于美国于旧金山湾区的Kadoink Inc.公司的技术经理。

FAISAL ABID是一名在加拿大多伦多求学的软件工程专业的学生,他拥有自己的RIA咨询公司G-uniX Technologies。他曾为很多客户撰写了RIA方案,包括基于互联网的创业型公司Buzzspot和RazorCom。Faisal的社区业绩包括在各类杂志上发表文章,他也因自己的技术经验而小有名气。

Ryan Stewart

Ryan Stewart

创建RIA(Rich Internet Applications,富因特网应用程序)的技术早于这个概念很久就出现了;Flash Platform是从v8开始支持RIA的。然而,Flash最初的定位只是一种发挥设计人员创意的环境,并不适合开发人员使用。

如果读者使用Flash开发应用程序,那么仍然需要跨越很大的障碍。首先,以高效快捷的方式发布囊括众多功能的富应用程序,就是一项严峻的挑战。因为,你必须亲手完成其中的绝大部分工作。

问题其实很简单:最好是有一个纯粹的开发环境,既能利用业已受到广泛支持、性能优越的Flash,又能直接满足开发人员及其系统开发的需求。为开发人员提供一个得力的工具,再配备一个能替他们完成大多数繁琐工作的框架,从而让他们把注意力集中到应用程序的逻辑上来。这个问题的解决方案就是Flex。

Adobe FlexAdobe FlexFlex自2004年3月由Macromedia发布起,已经过了多年的发展。而且,紧随第一版之后发布的1.5版,同年就取得了更好的销售业绩。Flex最早是作为一种服务器产品开发的,广告里也把它作为在Flash Platform上创建应用程序的一种工具来宣传。
这个工具的推出开启了一个新时代,也点燃了RIA的燎原之火。随着基于Flex的RIA日益受到人们关注,事实已经证明确实存在对RIA的需求,而这种技术手段赖以发展的基础也已具备。下一步就是把RIA推向规模化。

后来,在Adobe的品牌下,这个产品以2006年6月发布的Flex 2为标志取得了巨大的飞跃。主要表现在对语言(ActionScript 3)的重新实现和对Flash Player(V9)的重要升级,极大的提升了它的性能。

而且,开发环境转换到Eclipse平台,也坚定了程序员们的信心。Flex 2关注的是基础开发与服务器端数据管理的衔接问题。我们也知道,首次以免费方式发布的用于编译Flex应用程序的SDK还处在IDE外部。最终,服务器端组件发展成了Flex Data Services,即目前的LiveCycle Data Services,该服务支持实时数据共享。

这些改变都有助于形成更明确的RIA思想,即在浏览器中提供一种桌面应用程序般的体验。而此时,RIA最需要的就是社区支持。

Tariq Ahmed
Twitter

Tariq Ahmed

Tariq AhmedTariq也发现了社区支持的重要性,并走在了前列。为此,他创建了第一个专注于Flex的门户社区,即Community Flex (CFLEX.Net)

CFLEX.Net中汇集了引导人们学习这个新框架的大量经验、技巧、博客、新闻和技术文章。Tariq是社区发展初期上述内容的主要发布者,而我就从他那里学到了很多Flex技能。

Tariq很早就认识到了数据服务及实时数据对于RIA的重要性。他构建了很多Flex应用程序,从企业内部以业务为核心的系统,到面向外部用户的各种项目。他几乎理解并使用了这个平台提供的所有特性,而这也决定了他非常适合成为一本Flex书的作者。我相信,这本由业内专家亲自捉刀撰写的书,正是读者朋友们期待已久的。

Flex 3的发布,把我们带到了这个框架和这门技术的新阶段。Adobe对Flex平台的很多组件开源,目的就是让Flex尽可能透明化,从而有利于接收来自社区的有价值的反馈(当然,也包括有价值的代码)。

随着Adobe AIR的发布,开发人员现在又可以使用Flex部署桌面和基于浏览器的应用程序了。

Adobe过去曾以其伟大的设计工具而闻名。Flex 3是允许设计人员与开发人员紧密协作的第一个工具,可以为设计出漂亮美观的Flex应用程序提供强大支持。此外,这个框架和Flex Builder中包含的大量有助于提高效率的增强,降低了新开发人员使用Flex的门槛,也有助于他们开发出容易扩展的应用程序。

无论你有什么样的开发背景,也不管你对Flex了解多少,相信本书一定会成为你的得力助手。应该说,任何人都可以从本书中学习到有用的东西。Tariq与另外两位作者Jon和Faisal,为我们奉献了一本必备的Flex佳作。别忘了,本书出自深受人们喜爱、拥有许多必知必会资源的Flex社区——CFLEX.Net的头号人物之手。

Adobe Systems, Inc. 平台推广专家
Ryan Stewart