《JavaScript高级程序设计》第一章,JavaScript简介。
最近在阅读《JavaScript高级程序设计(第3版)》,以期能对该语言有整体把握和深入理解。
好记性不如烂笔头,边读边记录,或许会有不一样的收获。
诞生背景
在JavaScript问世前,如果想要对浏览器用户填写的表单信息做出一定的限制(如有必填区域、数值要求等),必须把该表单发送至服务器端,让服务器端对其进行判断,再将或正确或错误的信息发回给用户。由于当时拨号上网的速度非常慢,一趟下来得花费不少时间,且该操作可能会在一次填写中进行多次,因此人们希望这种基本的验证任务可以直接在客户端完成,以加快验证的速度。在这种需求下,JavaScript应运而生。
在随后发展中,JavaScript逐渐从一个简单的输入验证器进化为了更为强大的一门语言,在内容上有了很大的丰富。
JavaScript和ECMAScript
为了上述需求,Netscape公司为自家浏览器开发出名为LiveScript的脚本语言,而后将其更名为JavaScript。作为竞争对手,Microsoft公司而后也为自家的IE浏览器开发出了名为JScript的JavaScript实现。多家争鸣使得JavaScript亟需标准化,ECMA(European Computer Manufacturers Association)也因此组织委员会进行商讨开发,完成了一种新脚本语言的标准——ECMAScript。之后浏览器开发商们就开始致力于在ECMAScript基础上实现各自的JavaScript。
JavaScript实现
包含三个部分
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
ECMAScript
ECMAScript与Web浏览器无依赖关系,Web浏览器只是ECMAScript实现可能的宿主环境之一(其他的宿主环境包括Node、Adobe Flash)。ECMA-262规定了这门语言的语法、类型、语句、关键词、保留字、操作符、对象,在不断的修改更新中,现在也已经到了第10版。
什么是ECMAScript兼容?
指要成为ECMAScript的实现的要求,包含:
- 支持ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
- 支持Unicode字符标准
DOM
DOM是针对XML和HTML的用于提供访问和操作网页内容的方法和接口。DOM将页面映射为一个多层节点结构,通过DOM提供的API,开发人员可以轻松操纵其中任何一个节点。
Why DOM?
当时不同公司开发的浏览器分别支持不同形式的DHTML(Dynamic HTML),这使得开发人员不得不因为浏览器不兼容的原因写两份代码,这阻碍了Web的跨平台天性,因此负责制定Web通信标准的W3C开始着手规划DOM。
DOM级别
- DOM1级
由DOM核心和DOM HTML组成,目标是映射文档的结构。DOM核心规定如何映射基于XML的文档结构,DOM HTML在DOM核心的基础上拓展了针对HTML的对象和方法。 - DOM2级
增加了新类型和新接口的定义,包括DOM视图、DOM事件、DOM样式、DOM遍历和范围等。 - DOM3级
增加了以统一方式加载和保存文档的方法、验证文档的方法等。
BOM
BOM提供与浏览器交互的方法和接口。通过BOM提供的API,开发人员可以控制浏览器显示的页面以外的部分。BOM没有相关标准,但HTML5致力于把很多BOM功能写入正式规范,问题得到了解决。
兼容性
不同浏览器对JavaScript的三个成分有不同程度的支持,至于开发时具体细节的支持情况,可以在caniuse进行快速查看。