作者:李松峰_Nicholas C Zakas 页数:619 出版社:empty |
本书在上一版基础上进行了大幅度更新和修订, 融入了近几年来Java Seri pt应用发展的最新成果, 几本书适合不同层次的JavaScript Web开发人员阅读参考, 也可作为高校相关专业课程的教材。Copyright C2009byJohnWiley&Sons, Inc., All rights reserved.This translationTranslation edition published by POSTS&TELECOM PRESS Copyright C 2010.Copies of this books old without a Wiley sticker on the cover are unauthorized and illegal.本书简体中文版由John Wiley&Sons, Inc.授权人民邮电出版社独家出版。本书封底贴有John Wiley&Sons, Inc.激光防伪标签, 无标签者不得销售。版权所有,侵权必究。乎涵盖了所有需要理解的重要概念和最新的JavaScript应用成果。从颇具深度的JavaScript语言基础到作用域(链) , 从引用类型到面向对象编程, 从极其灵活的匿名函数到闭包的内部机制, 从浏览器对象模型(BOM) 、文档对象模型(DOM) 到基于事件的Web脚本设计, 从XML(E4X) 到Ajax及JSON, 从高级前端开发技术到前沿的客户端存储, 从最佳编程实践到即将成为现实的API.直至JavaScript未来的发展, 全景式地展示了JavaScript高级程序设计的方方面面。Original edtion, entitled Professional JavaScript for Web Developers 2nd Edition, by Nicholas C.Zak as, ISBN 978-0-470-22780-0, published by John Wiley&Sons, Inc.published under License.
序
从诞生至今的大部分时间里, 恐惧、咒骂、蔑视和误解一直与JavaScript如影随形。JavaScript刚相比之下, .COM泡沫时期加人Web开发行列的许多文科生, 则普遍觉得JavaScript深不可测、2001年前后(随着InternetExplorer 6的发布) , 浏览器实现已经大为改进, Web开发实践也开始到2004年底, JavaScript无疑已经成为最重要的编程语言。但从学术角度看, 它依然不具备进人为此, 很多技术作者挺身而出, 撰写了不少有关JavaScript的图书。几年来, 这类书虽然也出了2005年, Nicholas C.Zak as这本书的第一版面世, 为前端工程领域奉献了一本真正的好书。当时,从那时起我们就一直使用他的书。我们一致认为这本书太有用了, 于是就跟Zak as商量, 让他加Zak as在书中传达的理念与众不同——JavaScript既需要严肃认真地对待, 但也是完全可以理解和如果你曾经是一名文科生,在网络泡沫时期步人了这个行业,至今也没有转行,而且想要弥补自本书是经过扩展、更新和改进后的第二版,删除了上一版中与今天的职业需求无关的主题,并用刚问世那几年,很多“严肃的程序员”都认为它不够严肃。海涩难懂。就算那些耐力和韧性俱佳者能够把JavaScript琢磨得很透, 但仍然摆脱不掉竞争中的各种浏览器提供的不同实现给他们带来的麻烦。凡此种种,最终导致粗制滥造的脚本越来越多。另一方面,拜Web前端代码的无比开放性所赐, 各种坏习惯不断从一个站点被粘贴进另一个站点的源代码中。那些实现活该臭名昭著, 可是, JavaScript这门语言也因此被严重拖累, 背上了不该有的坏名声。得到改善, 呈现出了二者水乳交融的局面。作为Ajax核心的XMLHttpRequest对象正慢慢地为人们所认识, 一种新的桌面风格的用户交互模式出现在浏览器中。允许JavaScript操作Web文档结构和内容的DO MAP I已经定型。而CSS, 不管人们如何曲解或者无视它, 也无论浏览器开发商怎样丧心病狂地实现它, 都已经成长得足够茁壮, 它的美妙和反应敏捷令它能够与新的Web交互能力配合无间。最终, JavaScript一扫颓势, 变得令人惊诧、让人兴奋、使人敬畏。想想2004年第一次使用GoogleMaps时的情景吧,那种感觉你或许还记忆犹新。GoogleMaps是新兴应用程序的典型代表。这类浏览器编程与后端编程并重的应用程序, 不禁令人对Web浏览器窗口中那块“画布”的未来浮想联翩。(除GoogleMaps之外, 早在2003年就基于网页邮件客户端提供类似Outlook功能的Odd post, 也是这类应用程序的一个了不起的先驱。) 随着这类应用程序如雨后春笋般大量涌现, 以及支持它们的浏览器的市场份额不断攀升, 一个Web应用全面复兴的时代真的到来了。“Web 2.0”诞生了, Ajax也成了“IT”技术。Web似乎在一夜之间脱胎换骨,重新激发起了人们的兴趣。而JavaScript作为唯一的Web编程语言, 也变得更令人神往了。令人神往, 但用好它却不简单。JavaScript以及在DOM和BOM中为其定义的API不一致的实现,给跨浏览器编程造成了比原本大得多的困难。前端设计行业还远未成熟。大学教学计划并没有(至今仍没有)做出相应的调整,以满足相关的培训要求。一类学科的资格。Web虽然已经翻开了新的一页, 但在培养足够的知识全面、训练有素的人才方面,我们依然面临着严峻的挑战。不下几十本,但总体来说仍然不尽如人意。其中有的在推销与落伍的浏览器有关的技术,有的则在卖DG弄容易剪贴但却不好扩展和维护的技术。让人想不通的是, 许多Java Seri pt图书让人觉得作者好像并不真正喜欢JavaScript, 或者他们不认为读者应该喜欢它, 再或者他们根本不相信读者能够完全理解2序JavaScript。我和雅虎的同事们正在创建YUI(Yahoo!UserInterface Library, Yahoo!用户界面库) , 打算将其作为公司前端工程的基础,同时也借以推广我们这门新学问的最佳实践。每到周五,我们就聚到一间教室里讨论前端工程, 也向大家讲解JavaScript、CSS以及在浏览器中创建Web应用程序的知识。我们从已出版的高级JavaScript及DOM脚本编程方面的图书中认真挑选了几本, 想让新工程师通过它们掌握如何构建耐用、基于标准且容易维护的Web应用程序。Zak as的书一出版, 马上就被选为我们的JavaScript内部培训课本。人雅虎帮我们建立公司的前端工程社区。掌握的。如果你是个程序员, 这本书会告诉你JavaScript与各种编程语言的关系, 以及如何运用你已经习以为常的各种编程模式。你可以理解JavaScript的继承机制及其固有的动态特性(虽不合传统,但却十分自由十分强大) , 可以从Zak as这位尊重和理解JavaScript的同道那里学会欣赏JavaScript这门语言。己在JavaScript方面的不足, 你会发现Zak as是一位难得的良师益友。他可以帮你实现从“会做”到“做好”的转变。他能让你认真地理解这门严肃的学问。最重要的是,他不会让你先人为主地产生对这门语言应该理解多深的想法。相反,通过他严肃、耐心、通俗易懂的讲解,你自然而然地会对这门语言有同样深刻的认识。我们在2005年至2008年学习的新知识更新了剩余的内容。这几年是JavaScript发展的重要时期, Zak as则始终位于最前沿孜孜不倦地学习这些新知识。他这些年一直在致力于建造新一代最流行的Web个人门户(MyYahoo!) , 以及开发Web上最受欢迎的站点(Yahoo!主页) 的新版本。Zak as以他作为老师和作者的独特视角,筛选出由这些超复杂、超大型应用程序磨砺出的经验,并将这些经验融入到了本书的字里行间。他给出的解决方案远远超出了一本好书的范畴,只有每天都与代码同呼吸共命运的人,才有可能与读者分享如此具有实用价值的知识。说实话,本书新版的面世对我和各位读者而言真是个莫大的喜讯。因为它的内容比上一版更有价值、更能反映JavaScript最新的发展成果, 因此也更加令人不可错过。
前言
从驱动全球商业、贸易及管理领域不计其数的复杂应用程序的角度来看, 说JavaScript已经成为JavaScript是基于Java的一种非常松散的面向对象语言, 也是Web开发中极受欢迎的一门语言。在本书中, 我们将对JavaScript追根溯源, 从它在最早的Netscape浏览器中诞生谈起, 一直谈到本书提供了JavaScript开发人员必须掌握的内容, 全面涵盖了JavaScript的各种高级、有用的特性。本书首先介绍了JavaScript的起源及其发展现状, 随后讨论了构成JavaScript实现的各个组成部分,在此基础上, 本书从讲解JavaScript的基本概念入手, 探讨了JavaScript面向对象程序设计和继承C++等传统0O语言存在着诸多联系;口Inte met Explorer 6以及更高的版本、Opera 9以及更高的版本、Chrome 0.2以及更高的版本、Safari 2以及更高的版本。完整的示例源代码可以从http//www.wrox.com/中下载(下载步骤见“源代码”一节)°。第1章“JavaScript简介”, 讲述了JavaScript的起源:因何而生, 如何发展, 现状如何。涉及第3章“基本概念”, 讨论了JavaScript语言的基本概念, 包括语法和流控制语句。这一章也分第4章“变量、作用域和内存问题”, 探讨了JavaScript如何处理其松散类型的变量。这一章还第5章“引用类型”, 详尽介绍了JavaScript内置的所有引用类型, 如Object和Array。这一章当今世界上最流行的编程语言一点都不为过。本书将下列三类人员作为目标读者:要运行本书中的示例,需要安装下列软件:本书共22章,各章简介如下。JavaScript, 尽管它的语法和编程风格与Java都很相似, 但它却不是Java的“轻量级”版本。JavaScript是一种全新的动态语言, 它植根于全球数亿网民都在使用的Web浏览器之中, 致力于增强网站和Web应用程序的交互性。今天的它对DOM和Ajax的强大支持。读者将通过本书掌握如何运用和扩展这门语言, 从而更好地满足自己的需求, 以及如何实现客户端与服务器的无缝通信, 而又不必求助于Java或隐藏的网页框架(frame元素) 。一言以蔽之, 本书将教会你在面对各种常见的Web开发问题时, 如何拿出自己的JavaScript解决方案。本书内容重点讲解了ECMAScript和DOM标准。此外, 还对不同Web浏览器的JavaScript实现之间存在的差异,给出了相应的说明。的方式, 以及如何在HTML等标记语言中使用它。在深人剖析了事件和事件处理之后, 又解释了各种浏览器检测技术和在JavaScript中使用正则表达式的技巧。然后又通过综合运用前面学到的知识, 展示了创建动态用户界面的方方面面。本书最后一部分专门讨论了高级主题, 涉及性能和内存优化、最佳实践以及对JavaScript未来的展望。本书读者(1) 熟悉面向对象编程、经验丰富而又打算学习JavaScript的开发人员, JavaScript毕竟与Java、(2) 有意提升自己网站和Web应用程序易用性的Web开发人员,PDG(3) 希望全面深入地理解这门语言的初级JavaScript开发人员。2前言此外,本书也适合熟悉下列相关技术的读者阅读:(1) Java(2) PHP(3) ASP.NET(4) HTML(5) CSS(6) XML本书不适合没有计算机基础知识的初学者,也不适合只想为网站添加简单交互功能的读者。建议这些朋友学习阅读Beginning JavaScript, 3rd Edition(Wiley, 2007) 一书。使用示例口Windows 2000、Windows Server 2003、WindowsXP、Vista或MacOSX;本书结构的概念主要有JavaScript与ECMAScript之间的关系、DOM(Document Object Model, 文档对象模型) 、BOM(Browser Object Model, 浏览器对象模型) 。此外, 还将讨论ECMA(European ComputerManufacturer's Association, 欧洲计算机制造商协会) 和W3C(WorldWide Web Consortium, 万维网联盟)制定的一些相关标准。第2章“在HTML中使用JavaScript”, 介绍了如何在HTML中使用JavaScript创建动态网页。这一章不仅展示了在网页中嵌人JavaScript的各种方式, 还讨论了JavaScript内容类型(content-type)及其与