本书主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合有经验的 JavaScript 开发者随手翻阅。
1章
JavaScript概述
JavaScript是面向Web的编程语言。绝大多数现代网站都使用了JavaScript,并且所有的现代Web浏览器——基于桌面系统、游戏机、平板电脑和智能手机的浏览器——均包含了JavaScript解释器。这使得JavaScript能够称得上史上使用最广泛的编程语言。JavaScript也是前端开发工程师必须掌握的三种技能之一:描述网页内容的HTML、描述网页样式的CSS以及描述网页行为的JavaScript。本书能帮助你掌握 JavaScript这门语言。
如果你有其他语言的编程经历,这会有助于你了解JavaScript是一门高端的、动态的、弱类型的编程语言,非常适合面向对象和函数式的编程风格。 JavaScript的语法源自Java,它的一等函数(first-class function)来自于Scheme,它的基于原型(prototype-based)的继承来自于Self。但使用本书学习JavaScript不必去了解那些(Java\/Scheme\/Self)语言或熟悉那些术语。
“JavaScript”这个名字经常被误解。除了语法看起来和Java类似之外,JavaScript和Java是完全不同的两种编程语言。 JavaScript早已超出了其“脚本语言”(scripting-language)本身的范畴,而成为一种集健壮性、高效性和通用性为一身的编程语言。最新的语言版本为严谨的大型软件开发定义了诸多新的特性。
JavaScript:名字和版本
JavaScript是由Web发展初期的网景(Netscape)公司创建,“JavaScript”是Sun Microsystem 公司(现在的 Oracle)的注册商标,用来特指网景(现在的Mozilla)对这门语言的实现。网景将这门语言作为标准提交给了ECMA——欧洲计算机制造协会——由于商标上的冲突,这门语言的标准版本改了一个丑陋的名字“ECMAScript”。同样由于商标的冲突,微软对这门语言的实现版本取了一个广为人知的名字“Jscript”。实际上,几乎所有人都将这门语言叫做“JavaScript”。本书也仅仅使用“ECMAScript”来指代语言标准。
在最近10年间,所有的Web浏览器都实现了第3版ECMAScript标准,我们也已经不必再去考虑版本号了:语言标准已经很稳定了,并且被几乎所有浏览器完整地实现了。最近,ECMAScript第5版定义了新的语言标准,在撰写本书时,浏览器已经开始实现它了。除了ECMAScript 3长期保留下来的特性,本书还涵盖了所有ECMAScript 5的新特性。正如我们经常将JavaScript简写成JS一样,ECMAScript 3和ECMAScript 5有时也会简写成ES3和ES5。
当我们提到这门语言本身时,通常所指的语言版本是ECMAScript 3和ECMAScript 5(ECMAScript 4 已经开发了数年,但由于太过庞大,从未发布过正式版本)。有时会看到JavaScript的版本号(比如 JavaScript 1.5或JavaScript 1.8)。这些是Mozilla的版本号:版本1.5基本上就是ECMAScript 3,后续版本包含了非标准的语言扩展(参照第11章)。最后,JavaScript解释器或者“引擎”(engine)也有版本号,比如,Google将它的JavaScript解释器叫做V8,在撰写本书时V8引擎最新版本是3.0。
为了有用起见,通常每一种编程语言都有各自的开发平台、标准库或API函数,用来提供诸如基本输入输出的功能。JavaScript语言核心针对文本、数组、日期和正则表达式的操作定义了很少的API,但是这些API不包括输入输出功能。输入和输出功能(类似网络、存储和图形相关的复杂特性)是由JavaScript所属的 “宿主环境”(host enviroment)提供的。这里所说的宿主环境通常是Web浏览器(第12章会介绍两个不基于Web浏览器的JavaScript宿主环境),本书第一部分涵盖了语言本身的特性以及少量的内置API。第二部分讲解了JavaScript如何在Web浏览器中工作,并涵盖基于浏览器的API——这部分也称做“客户端JavaScript”。
本书第三部分是核心API的参考手册。比如,在这部分,可以查找“Array”以获得JavaScript数组操作API的详细信息。第四部分是客户端JavaScript参考手册,比如,你可以在这部分查找“canvas”来获得HTML 5 元素定义的图形编程API。
本书首先讲解初级的基础部分,然后讲解更高级和更抽象的内容。本书的章节也是如此安排以便你能循序阅读。但学习一门新的编程语言绝非易事,当然要完整描述这门语言就没办法苛求知识点的循次渐进,每一种语言特性都和其他特性相互关联,本书的知识点也是前后参照的,有时参照的知识点在后续章节,有时在已经阅读的章节。本章快速介绍了语言核心部分和客户端API及其关键特性,以便你能更方便更深入地阅读理解后续章节。
……