javascript--1 JavaScript 简介

1JavaScript简介

1.1JavaScript简史

阶段背景公司浏览器版本JavaScript版本影响

诞生在当时依然使用“猫”进行上网、网络速度非常慢的情况下,网页的大小和复杂度却越来越高,因此为了简单的表单校验,而进行频繁的数据交互只会加重用户的负担,造成不好的用户体验Netscape,Sun公司组成的开发联盟NetscapeNavigator2LiveScript(浏览器端)/LiveWare(服务器端),发布前LiveScript更名为JavaScript1.0辅助进行浏览器端的数据输入校验

JavaScript推出后反响强烈NetscapeNetscapeNavigator3JavaScript1.1

差异化微软推出JScript与Netscape对抗MicrosoftIE3JScript1.0两种不同实现将JavaScript当时尚未标准化的语法和特定问题暴露无遗,JavaScript的标准化被挪上日程

标准化1997年,欧洲计算机制造商协会(ECMA)下的39号技术委员会(TC39)开始制定以JavaScript1.1为蓝本的“通用、跨平台、供应商中立的脚本语言语法和定义”ECMA/TC39ECMA-262,即ECMAScript标准第二年,ISO/IEC采用该标准,浏览器开发商致力于基于ECMAScript标准的JavaScript实现

1.2JavaScript实现

完整的JavaScript实现包含:ECMAScirpt(核心)、BOM(浏览器对象模型)、DOM(文档对象模型)

1.2.1ECMAScript

ECMAScrpt与JavaScript实现的区别

ECMAScriptJavaScript实现

宿主环境依赖与Web浏览器没有依赖关系,本身不包含输入输出需要依赖宿主环境,如JavaScript以Web浏览器作为宿主环境;Node.js以Node为宿主环境;ActionScript以AdobeFlash为宿主环境

总结作为脚本语言的标准和基础在ECMAScript上定义更完善脚本语言

备注:宿主环境不仅提供基本的ECMAScript实现,同时提供该语言扩展,如DOM,以便语言与环境进行交互。

ECMAScript规定内容

语法

类型

语句

关键字

保留字

操作符

对象

ECMAScript版本

ECMA-262版本内容说明

第1版本质上与JavaScript1.1相同。不同点:删除针对浏览器的代码;支持Unicode标准;对象为平台无关,即在不同平台中的实现相同(JavaScript1.1中的Date对象等不同平台实现不同)

第2版仅编辑加工使得与ESO/IEC-16262保持严格一致,没有任何新增修改和删节处理不用此版本衡量兼容性

第3版修改内容:字符串处理、错误定义、数值输出;新增内容:正则表达式、新控制语句、try-catch异常处理支持;围绕标准国际化的修改;标志ECMAScript成为一门真正编程语言

第4版全面检核修订:强类型变量、新语句、新数据结构、真正的类和经典继承、数据交互新方式TC39制定,正式发布前被放弃

第5版仅进行小幅修改,能够在现有JavaScript引擎基础上实现。新增:原生JSON对象(用于解析和序列化JSON数据)、继承的方法和高级属性定义、严格模式;对ECMAScript引擎解释和执行代码进行补充说明原版本为ECMAScript3.1,由ES3.1附属委员会制定,支持率超过TC39,成为第4版

ECMAScript兼容的定义

必须支持ECMA-262描述的所有“类型、值、对象、属性、函数以及程序句法和语义”

必须支持Unicode字符标准

可选添加ECMA-262没有描述的“更多类型、值、对象、属性、函数”,主要指标准中没有规定的新对象和对象的新属性

可选支持ECMA-262没有定义的“程序和正则表达式语法”,即可以修改和扩展内置的正则表达式语法

Web浏览器对ECMAScript的支持

公司浏览器JavaScript实现版本ECMAScript兼容

NetscapeNetscapeNavigator3JavaScript1.1作为ECMA-262第1版指定范本,但并不兼容(不支持Unicode标准并存在Date等对象在不同平台中实现不一样)

微软IE3JScript1.0不兼容

NetscapeNetscapeNavigator4JavaScript1.2在ECMA-262第1版制定之前就开始开发,因此不兼容ECMA-262第1版

微软JScript2.0随IIS3.0发布,并未移植到浏览器中

微软IE4JScript3.0号称是第一个兼容ECMA脚本语言,但发布时ECMA-262第1版尚未定稿,并不兼容

NetscapeNetscapeNavigator4.06JavaScript1.3与ECMA-262第1版完全兼容

NetscapeJavaScript1.4原计划与NetscapeNavigator5一同发布,但由于激进决定重新设计Netscape代码,而最终只发布针对NetscapeEnterpriseServer的服务器版,没有内置于Web浏览器中

2008年,五大主流浏览器(IE、Firefox、Safari、Chrome、Opera),全部做到与ECMA-262兼容

IE8是第一个着手实现ECMA-262第5版的浏览器,并在IE9中提供完整支持

Firefox4随后兼容ECMA-262第5版

主流浏览器对ECMAScript支持情况如下:

1.2.2文档对象模型(DOM)

DOM介绍

针对XML但经过扩展用于HTML的应用程序编程接口(API)

DOM把整个页面映射为一个多层节点结构

借助DOM提供的API,开发人员可以自如地增删改查任何节点

DOM不止针对JavaScript,很多别的语言也都实现了DOM;在Web浏览器中,基于ECMAScript实现的DOM已经成为JavaScript的重要组成部分

DOM级别(W3C标准)

DOM1级(DOMLevel1)

由两个模块组成:

DOM核心(DOMCore)如何映射基于XML的文档结构,以便简化对文档中任意部分的访问和操作

DOMHTML在DOM核心的基础上加以扩展,添加针对HTML的对象和方法

DOM2级(DOMLevel2)

引入了下列新模块,也给出了众多新类型和新接口的定义:

DOM视图(DOMViews)定义了跟踪不同文档(如应用CSS之前和之后的文档)视图的接口

DOM事件(DOMEvents)定义了事件和事件处理的接口

DOM样式(DOMStyle)定义了基于CSS为元素应用样式的接口,即增加了CSS支持

DOM遍历和范围(DOMTraveralandRange)定义了遍历和操作文档树的接口

DOM核心模块也经过扩展开始支持XML命名空间

DOM3级(DOMLevel3)

增加了以下模块,并扩展DOM核心模块:

DOM加载和保存(DOMLoadandSave)以统一方式加载和保存文档的方法

DOM验证(DOMValidation)验证文档的方法

DOM核心模块扩展,开始支持XML1.0规范,涉及XMLInfoset、XPath和XMLBase

DOM0级(DOMLevel0):实际不存在,仅作为DOM历史坐标中的一个参照物,指的是IE4.0和NetscapeNavigator4.0最初支持的DHTML

其他W3C推荐DOM标准

SVG(ScalableVectorGraphic,可伸缩矢量图)1.0

MathML(MathematicalMarkupLanguage,数学标记语言)1.0

SMIL(SynchronizedMultimediaIntegrationLanguage,同步多媒体集成语言)

Web浏览器对DOM的支持

1.2.3浏览器对象模型(BOM)

浏览器对象模型(BOM,BrowserObjectModel)提供可以访问和操作浏览器窗口的接口和方法

根本上讲,只处理浏览器窗口和框架,但人们习惯将针对浏览器的JavaScript扩展算作BOM的一部分,如Cookie支持、XMLHttpRequest自定义对象等

一直没有相关的标准,每个浏览器都会在BOM实现中定义自己的属性和方法;直到HTML5发布后,将很多DOM功能写入正式规范,BOM实现细节有望朝兼容性越来越高的方向发展

BOM包含以下扩展:

window对象:弹出新浏览器窗口、移动、缩放和关闭浏览器窗口

navigator对象:提供浏览器详细信息

location对象:提供浏览器所加载页面的详细信息

screen对象:提供用户显示器分辨率详细信息

对cookie的支持

像XMLHttpRequest和IE的ActiveXObject这样的自定义对象

1.3JavaScript版本

相关推荐