Effective JavaScript 编写高质量JavaScript代码的68个有效方法(高清中文版)

所需积分/C币:22 2018-04-19 11:20:37 57.23MB PDF

《Effective JavaScript:编写高质量JavaScript代码的68个有效方法》共分为7章,分别涵盖JavaScript的不同主题。第1章主要讲述最基本的主题,如版本、类型转换要点、运算符注意事项和分号局限等。第2章主要讲解变量作用域,介绍此方面的一些基本概念,以及一些最佳实践经验。第3章主要讲解函数的使用,深刻解析函数、方法和类,并教会读者在不同的环境下高效使用函数。第4章主要讲解原型和对象,分析JavaScript的继承机制以及原型和对象使用的最佳实践和原则。第5章主要介绍数组和字典,阐述将对象作为集合的用法以及使用数组和字典的一些陷阱。第6章介绍库和API,讲解如何设计良
本书赞誉 “这是一本绝不辜负 Effective软件开发系列期望的编程书籍。对于任何一个想要做到严谨编程 的 JavaScript开发者来说,这本书绝对不容错过。这书阐述了 JavaScript内部工作的一些细节 以期帮助读者更好地利用 JavaScript语言优势。” Erik Arvidsson,高级软件工程师 “很少有像 David这样的编程语言极客能如此舒适、友好地讲解编程语言。他带领我们领会 JavaScript语法和语义,这个过程既令人陶醉又极其深刻。本书以舒适的节奏额外提供了一些“有 问题”的现实案例。当你读完本书后,你会感觉自己获得了一种强大而全面的掌控能力。” Paul irish, Google Chrome开发主管 “在阅读本书之前,我以为它只是另一本关于如何更好地使用 JavaScript编程的书籍。然而本 书远不止如此,它还会使你更深入地理解 JavaScript这门语言,这是至关重要的。如果没有这层对 Javascript的深入理解,那么你绝不会懂得语言本身的任何东西,只知道其他的程序员是如何编写 代码的。” 如果你想成为一名真正优秀的 JavaScript开发者,那么请阅读本书。就我来说,我多么希望 在第一次开始 JavaScript编程时就已经阅读了它。 Anton Kovalyov, JSHint开发者 如果你正在寻找一本正式且极具可读性的并极具洞察力的 Java Script语言的书籍,那不用舍 近求远了。 Javascript开发者能够从其中找到珍贵的知识宝藏,甚至技术精湛的 JavaScript程序员 也一定能从中获益。对于有其他语言经验而想一头扎进 JavaScript世界的从业人员来说,本书是迅 速学习 JavaScript的必读之物。然而,不管你的背景如何,但都不得不承认作者 Dave herman在探 索 Javascript方面做得非常棒— JavaScript的优美部分、不足部分或介于两者之间的所有内容都 囊括于本书之中。” Rebecca murphey, Bocoup高级 Javascript开发者 “对于任何一位理解 Javascript并且想要完全掌握它的人员来说,本书是必不可少的读物。 Dave herman带给了谈者深刻的、具有研究和实践意义的 JavaScript语言理解,通过一个接一个的 例子指导并帮助读者达到与他同样的理解高度。这不是一本寻求捷径的书籍,恰恰相反,是一本难 得的将经验提炼为指南的书籍。它是一本为数不多让我亳不犹豫推荐的关于 Javascript的书籍。” Alex Russell,TC39成员,Goog}e软件工程师 很少有人有机会同大师一起学习他们的手艺。这本书弥补了这种遗憾,其对 Javascript的研 究就像随一位时间旅行哲学家回到公元前5世纪与柏拉图一同学习。” Rick waldron, JavaScript传教士, Bocoup 译者序 虽然 JavaScript在诞生之初由于商业原因及缺乏规范,一直饱受诟病。但是随着时间的 推移,人们已经逐渐走出了对这门语言的偏见和误解,开始领略它那强大的语言特性威力。当 下 JavaScript语言大红大紫,研究讨论 JavaScript的相关书籍早已汗牛充栋,但是这本书作为 Effective软件开发系列中的一员,却是不可或缺的。 学会编写 JavaScript程序容易,但要成为专家却实属不易。一方面是由于 JavaScript语言的设 计思想与Java、C#等大众语言区别很大,另一方面是由于其设计时的仓促性导致 JavaScript语言 本身精华与糟粕并存。本书的作者 David herman作为 JavaScript标准化的参与者,在书中自然对 JavaScript的精华和糟粕都进行了深人阐述,并且给出了很多实用的建议。这些建议都来自于第一 线的实践经验,无论是初学者还是高级程序员,都可以从中吸收养分,进而快速成长。 本书深人阐述了 JavaScript语言,通过它可以了解到如何有效地编写出高移植性、健壮的程序 和库。本书传承了 Effective软件开发系列的简明场景驱动风格,通过提示、技术及实用的示例代 码解释 JavaScript中的重要概念。 全书共涉及68条关于 JavaScript程序设计的建议。第1章可以让初学者快速熟悉 JavaScript 了解 Javascript中的原始类型、隐式强制转换、编码类型等基本概念;第2章着重讲解了有关 Javascript的变量作用域的建议,不仅介绍了怎么做,还介绍了操作背后的原因,帮助读者加深理 解;第3章和第4章的主题涵盖函数、对象及原型三大方面,这可是 JavaScript区别于其他语言的 核心,读者也不必紧张,在 David herman大叔的指引下,你可以轻松掌握这些核心内容,了解到 业界最佳实践;第5章则阐述了数组和字典这两种容易混淆的常用类型及具体使用时的建议,避免 陷人一些陷阱;第6章讲述了库和API设计;第7章讲述了并行编程,这是晋升为 Javascript专家 的必经之路。 Cob tirr 想要深入了解 JavaScript并获取一线专家的宝贵经验吗?那么,这本书正好适合你。 我和同事喻杨在翻译这本书的过程中投入了不少精力,生怕给这本经典之作留下一些遗憾。感 谢华章公司的编辑们对我们的支持。 最后,希望本书能给大家带来一次超凡的阅读体验。 黄博文 序 众所周知,我在1995年5月用了10天时间创建了 JavaScript语言。迫于现实的压力和冲突管 理的势在必行,我将 JavaScript设计为“看起来像Java”、“方便初学者”、“在网景浏览器中几乎能 控制它的一切”的编程语言。 鉴于极具挑战性的要求和非常短的时间表,我的解决方案除了正确获得了两大特性之外(第一 类函数、对象原型),还将 JavaScript设计为一开始就极具延展性。我知道一些开发者不得不对最 开始的几个版本“打补丁”来修正错误,这些先驱的方法比我使用内置库胡乱拼凑的方法更好。举 例来说,虽然许多编程语言都限制了可变性,在运行时不能修改或扩展内置对象,或者标准库的名 称绑定不能通过赋值被覆盖,但是 JavaScript几乎允许完全改变每个对象。 总的来说,我相信这是一个很好的设计决定。它明确了某些领域的挑战(如在浏览器的安全边 界内,安全地混用可信和不可信的代码)。对于 JavaScript来说,支持所谓的猴子补丁是很重要的。 凭借它,开发者可以编辑标准对象来解决Bug和仿效“未来”的功能改造一些旧的浏览器(称为 polyfill库的shim,在美式英语中称为 spackle)。 除了这些平凡的应用之外, JavaScript的可塑性鼓励用户沿着几个更富有创造性的方向形 成和发展创新网络。这使得用户仿效其他编程语言,创建了许多工具包和框架库:基于Ruby的 Prototype、基于 Python的 Mochikot、基于Java的Doo以及基于 Smalltalk的 TIBET。随后是 jQuery库(“ JavaScript的新浪潮”),2007年我第一次看到它,对我来说,我似乎是一个后来者。 它暴风雨般地引领着 Javascript的世界,异于其他编程语言,而从旧的 JavaScript库中学习,开辟 了浏览器的“查询和做”( query and do)模型,从根本上简化了浏览器。 这引领着 JavaScript用户群及其创新网络,促成了一种 JavaScript“自家风格”。这种风格仍 在仿效和简化其他的程序库,也促成了现代Web标准化的工作。 在这一演变的过程中, JavaScript保持了向后兼容,当然默认情况下,它是可变的。另外,在 ECMAScript标准最新的版本中新增了一些方法来冻结对象和封闭对象的属性,以防止对象扩展和 属性被覆盖。 Javascript的演进之旅远未结束。这就像生活的语言和生物系统一样,变化始终存在。 在此之前,我无法预见一个单一的横扫其他程序库的“标准库”或编码风格。 VII 没有语言不是怪癖的,或者所有语言几乎都是受限地执行常见的最佳实践。 JavaScript是一门 怪癖的或者充满限制主义色彩的编程语言。因此,与大多数其他的编程语言相比,想要高效地使用 JavaScript编程,开发人员必须学习和追求优秀的风格、正确的用法和最佳的实践。当考虑如何做 到最高效,我相信避免过度编程和构建刚性或教条式的风格指南是至关重要的。 本书以一种平衡的方式讲解 JavaScript编程。它基于一些具体的实证和经验,而不迂回于刚性 或过度的方法。我认为对于许多寻找以不牺牲表现力,并希望自由采用新思想和编程范式来编写高 效 JavaScript的人来说,它是一位重要的助手和可信赖的向导。它也是一本备受关注、充满乐趣和 拥有许多令人叹为观止的示例的读物。 最后,自2006年,我有幸结识 David herman。那是我第一次以 Mozilla代表的身份邀请他作 为特邀专家在Ecma标准化机构工作。Dave深刻、谦逊的专家意见以及他的热情让 JavaScript在书 中的每一页大放异彩。本书绝无仅有! Brendan Eich 前言 学习一门编程语言,需要熟悉它的语法、形式和结构,这样我们才能编写合法的、符合语义 的、具有意义和行为正确的程序。但除此之外,掌握一门语言需要理解其语用,即使用语言特性构 建高效程序的方法。后一种范畴是特别微妙的,尤其是对 JavaScript这样一种灵活而富有表现力的 编程语言来说。 这是一本关于 JavaScript语用学的书。这不是一本入门书籍,我假设你在一定程度上熟悉了 JavaScript和通常的编程。很多优秀的 JavaScript人门书籍可供参考,例如, Douglas Crockford的 《 Javascript: The Good Parts》和 Marijn Haverbeke的《 Eloquent JavaScript》。本书的目的是帮助 你加深理解如何有效地使用 JavaScript构建更可预测、可靠和可维护的 JavaScript应用程序和库。 Java Script 5 ECMAScript 在深人本书之前澄清一些术语是有必要的。这是一本关于举世皆知的 JavaScript编程语言的书 箱。然而,官方标准定义的规范的描述是一门称该语言为 ECMAScript。历史很令人费解,但这可 以归结为版权问题:出于法律原因,Ecma国际标准化组织不能使用“ JavaScript”作为其标准名称。 (更糟的是,标准化组织将其原来的名称ECMA(欧洲计算机制造商协会的英文首字缩写)改为不是 全大写的Ecma国际标准化组织。彼时, ECMAScript这个名字大约也是早已注定。) 正式来说,当人们提到 ECMAScript时,通常是指由Ecma国际标准化组织制定的“理想” 语言。与此同时, JavaScript这个名字意味着来自语言本身的所有事物,例如某个供应商特定的 Javascript引擎。通常情况下,人们经常交替使用这两个术语。为了保持清晰度和一致性,在本书 中,我将只使用 ECMAScript来谈论官方标准,其他情况,我会使用 JavaScript指代语言。我还会 使用常见的缩写ES5来指代第5版的 ECMAScript标准。 关于Web 避开Web来谈 JavaScript是很难的。到目前为止, JavaScript是唯一为用于客户端应用程 序脚本的所有主流浏览器提供内置支持的编程语言。此外,近年来,随着 Node. js平台的问世, JavaScript已经成为一个实现服务器端应用程序的流行编程语言。 不过,本书是关于 JavaScript而非Web的编程。有时,谈论一些Web相关的例子和应用程序 的概念是帮助读者理解。但是,这本书的重点是 JavaScript语言的语法、语义和语用,而不是web 平台的API和技术。 关于并发 JavaScript一个新奇的方面是在并发环境中其行为是完全不明朗的。 ECMAScript标准(包括 第5版)关于 JavaScript程序在交互式或并发环境中的行为只字未提。第7章涉及并发,因此,我 只是从技术角度介绍一些非官方的 Javascript特性。但实际上,所有主流的 Javascrip引擎都有 个共同的并发模型。尽管在标准中未提及并发,但是致力于并发和交互式的程序是 JavaScript编程 的一个核心概念。事实上,未来版本的 ECMAScript标准可能会正式地标准化这些 JavaScript并发 模型的共享方面。 致谢 这本书在很大程度上要归功于 Javascript的发明者— -Brendan eich。我深深感谢 Brendan邀 请我参与 JavaScript标准化工作,以及他对我在 Mozilla的职业生涯中给予的指导和支持。 本书中的大部分材料是受优秀的博客文章和在线论文的启发。我从Ben“ cowboy” Alman、 Erik arvidsson、 Mathias Bynens、Tim“ creations" Caswell、 Michaeljohn“ InlIne” Clement、 Angus Croll、 Andrew Dupont、 Ariya Hidayat、 Steven levithan、 Pan thomakos、 Jeff Walden,以 及 Juriy“ kangax” Zaytsev的博客中学到很多东西。当然,本书的最终资源来自 ECMAScript规范。 ECMAScript规范自第5版以来由 Allen wires- Brock不知疲倦地编辑和更新。 Mozilla开发者网络 仍然是 JavaScript API和特性最令人印象深刻的、高品质在线资源之一。 在策划和写作这本书的过程中,我有许多顾问。在我开始写作之前, John Resig就以作者的 角度给了我很多有用的建议。 Blake Kaplan和 Patrick Walton帮我在早期阶段整理我的想法和规划 出这本书的组织结构。在写作的过程中,我从 Brian anderson、 Norbert Lindenberg、 Sam tobin- Hochstadt、 Rick waldron和 Patrick walton那里得到了很好的建议。 很高兴能够和 Pearson的工作人员共事。 Olivia Basegio、 Audrey Doyle、 Trina Mac Donald、 Scott Meyers和 Chris Zahn一直关注我提出的问题,对我的拖延报以耐心,并通融我的请求。我无 法想象还能有一个更偷快的写作经历。我对能为 Effective系列写一本书感到非常荣幸。因为很久 X 以前我就是《 Effective C++》的粉丝,我曾经怀疑我是否有亲自书写一本 Effective系列书籍的荣幸。 我也简直不敢相信自己有这样的好运气,能够找到梦之队一样的技术编辑。我很荣幸Erik Arvidsson、 Rebecca Murphey、 Rick Waldron和 Richard worth同意编辑这本书,他们为我提供了 许多宝贵的批评和建议。他们多次纠正了书中一些真正令人尴尬的错误。 写一本书比我预想的要难得多。如果不是朋友和同事的支持,我可能已经失去了勇气。在我怀 疑自己的时候, Andy denmark、 Rick Waldron和 Travis Winfrey总是给予我鼓励。 我绝大部分时候是在旧金山柏丽附近的神话般的 Java beach咖啡厅里写作这本书的。那里的 工作人员都知道我的名字,并且我还没点餐之前,他们就知道我想要点什么。我很感谢他们提供了 一个舒适的工作场所,并给我提供食物和咖啡。 我的毛茸茸的猫科小友 Schmoopy为本书做出了它的最大贡献。至少,它不停地跳上我的膝 盖,坐在屏幕前(有可能是笔记本电脑比较温暖)。 Schmoopy自2006年以来一直是我的忠实伙伴, 我不能想象我的生活能离得开这个小毛球。 我的整个家庭对这个项目从开始到结束一直都很支持和激动。遗憾的是,我无法在我的爷爷 和奶奶( Frank和 Miriam lamar)去世之前和他们分享这本书的成品。但他们会为我感到激动和自 豪,而且本书中有一小段我儿时与爷爷 Frank编写 BASIC程序的经历。 最后,我要感谢我一生的挚爱 Lisa silveria,我对她的付出无以为报。

...展开详情

评论 下载该资源后可以进行评论 2

jameskarry 感谢分享!
2018-10-09
回复
learn1java 没有目录稍显不足。
2018-04-27
回复
img
  • GitHub

    绑定GitHub第三方账户获取
  • 签到新秀

    累计签到获取,不积跬步,无以至千里,继续坚持!

关注 私信 TA的资源

上传资源赚积分,得勋章
最新资源