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版本