javascript--1 JavaScript 简介

1 JavaScript 简介
1.1 JavaScript 简史
阶段 背景 公司 浏览器版本 JavaScript 版本 影响
诞生 在当时依然使用“猫”进行上网、网络速度非常慢的情况下,网页的大小和复杂度却越来越高,因此为了简单的表单校验,而进行频繁的数据交互只会加重用户的负担,造成不好的用户体验 Netscape,Sun 公司组成的开发联盟 Netscape Navigator 2 LiveScript(浏览器端)/LiveWare(服务器端),发布前 LiveScript 更名为 JavaScript 1.0 辅助进行浏览器端的数据输入校验
JavaScript 推出后反响强烈 Netscape Netscape Navigator 3 JavaScript 1.1
差异化 微软推出 JScript 与 Netscape 对抗 Microsoft IE 3 JScript 1.0 两种不同实现将 JavaScript 当时尚未标准化的语法和特定问题暴露无遗, JavaScript 的标准化被挪上日程
标准化 1997年,欧洲计算机制造商协会(ECMA)下的 39 号技术委员会(TC39)开始制定以 JavaScript 1.1 为蓝本的 “通用、跨平台、供应商中立的脚本语言语法和定义” ECMA/TC39 ECMA-262,即 ECMAScript 标准 第二年,ISO/IEC 采用该标准,浏览器开发商致力于基于 ECMAScript 标准的 JavaScript 实现
1.2 JavaScript 实现
完整的 JavaScript 实现包含:ECMAScirpt(核心)、BOM(浏览器对象模型)、DOM(文档对象模型)
1.2.1 ECMAScript

ECMAScrpt 与 JavaScript 实现的区别
ECMAScript JavaScript 实现
宿主环境依赖 与 Web 浏览器没有依赖关系,本身不包含输入输出 需要依赖宿主环境,如 JavaScript 以 Web 浏览器 作为宿主环境;Node.js 以 Node 为宿主环境; ActionScript 以 Adobe Flash 为宿主环境
总结 作为脚本语言的标准和基础 在ECMAScript 上定义更完善脚本语言
备注:宿主环境不仅提供 基本的 ECMAScript 实现,同时提供该 语言扩展,如DOM,以便语言与环境进行交互。
ECMAScript 规定内容
语法
类型
语句
关键字
保留字
操作符
对象
ECMAScript 版本
ECMA-262 版本 内容 说明
第 1 版 本质上与 JavaScript 1.1 相同。不同点:删除针对浏览器的代码;支持 Unicode 标准;对象为平台无关,即在不同平台中的实现相同(JavaScript 1.1 中的Date对象等不同平台实现不同)
第 2 版 仅编辑加工使得与 ESO/IEC-16262 保持严格一致,没有任何新增修改和删节处理 不用此版本衡量兼容性
第 3 版 修改内容:字符串处理、错误定义、数值输出;新增内容:正则表达式、新控制语句、try-catch 异常处理支持;围绕标准国际化的修改; 标志 ECMAScript 成为一门真正编程语言
第 4 版 全面检核修订:强类型变量、新语句、新数据结构、真正的类和经典继承、数据交互新方式 TC39制定,正式发布前被放弃
第 5 版 仅进行小幅修改,能够在现有 JavaScript 引擎基础上实现。新增:原生 JSON 对象(用于解析和序列化 JSON 数据)、继承的方法和高级属性定义、严格模式;对ECMAScript 引擎解释和执行代码进行补充说明 原版本为 ECMAScript 3.1,由ES3.1 附属委员会制定,支持率超过TC39,成为第 4 版
ECMAScript 兼容的定义
必须 支持 ECMA-262 描述的所有 “类型、值、对象、属性、函数以及程序句法和语义”
必须 支持 Unicode 字符标准
可选 添加 ECMA-262 没有描述的 “更多类型、值、对象、属性、函数”,主要指标准中没有规定的新对象和对象的新属性
可选 支持 ECMA-262 没有定义的 “程序和正则表达式语法”,即可以修改和扩展内置的正则表达式语法
Web 浏览器对 ECMAScript 的支持
公司 浏览器 JavaScript 实现版本 ECMAScript 兼容
Netscape Netscape Navigator 3 JavaScript 1.1 作为 ECMA-262 第 1 版指定范本,但并不兼容(不支持 Unicode 标准并存在 Date 等对象在不同平台中实现不一样)
微软 IE 3 JScript 1.0 不兼容
Netscape Netscape Navigator 4 JavaScript 1.2 在 ECMA-262 第 1 版制定之前就开始开发,因此不兼容 ECMA-262 第 1 版
微软 JScript 2.0 随 IIS 3.0 发布,并未移植到浏览器中
微软 IE 4 JScript 3.0 号称是第一个兼容 ECMA 脚本语言,但发布时 ECMA-262 第 1 版尚未定稿,并不兼容
Netscape Netscape Navigator 4.06 JavaScript 1.3 与 ECMA-262 第 1 版完全兼容
Netscape JavaScript 1.4 原计划与 Netscape Navigator 5 一同发布,但由于激进决定重新设计 Netscape 代码,而最终只发布针对 Netscape Enterprise Server 的服务器 版,没有内置于 Web 浏览器中
2008年,五大主流浏览器(IE、Firefox、Safari、Chrome、Opera),全部做到与 ECMA-262 兼容
IE 8 是第一个着手实现 ECMA-262 第 5 版的浏览器,并在 IE 9 中提供完整支持
Firefox 4 随后兼容 ECMA-262 第 5 版
主流浏览器对 ECMAScript 支持情况如下:



1.2.2 文档对象模型(DOM)

DOM 介绍

针对 XML 但经过扩展用于 HTML 的应用程序编程接口(API)
DOM 把整个页面映射为一个多层节点结构
借助 DOM 提供的 API,开发人员可以自如地增删改查任何节点
DOM 不止针对 JavaScript,很多别的语言也都实现了 DOM;在 Web 浏览器中,基于 ECMAScript 实现的 DOM 已经成为 JavaScript 的重要组成部分
DOM 级别(W3C 标准)

DOM 1 级(DOM Level 1)
由两个模块组成:
DOM 核心(DOM Core) 如何映射基于 XML 的文档结构,以便简化对文档中任意部分的访问和操作
DOM HTML 在 DOM 核心的基础上加以扩展,添加针对 HTML 的对象和方法
DOM 2 级(DOM Level 2)
引入了下列新模块,也给出了众多新类型和新接口的定义:
DOM 视图(DOM Views) 定义了跟踪不同文档(如应用 CSS 之前和之后的文档)视图的接口
DOM 事件(DOM Events) 定义了事件和事件处理的接口
DOM 样式(DOM Style) 定义了基于 CSS 为元素应用样式的接口,即增加了 CSS 支持
DOM 遍历和范围(DOM Traveral and Range) 定义了遍历和操作文档树的接口
DOM 核心模块也经过扩展开始支持 XML 命名空间
DOM 3 级(DOM Level 3)
增加了以下模块,并扩展 DOM 核心模块:
DOM 加载和保存(DOM Load and Save) 以统一方式加载和保存文档的方法
DOM 验证(DOM Validation) 验证文档的方法
DOM 核心模块扩展,开始支持 XML 1.0 规范,涉及 XML Infoset、XPath 和 XML Base
DOM 0 级(DOM Level 0):实际不存在,仅作为 DOM 历史坐标中的一个参照物,指的是 IE 4.0 和 Netscape Navigator 4.0 最初支持的 DHTML
其他 W3C 推荐 DOM 标准

SVG(Scalable Vector Graphic,可伸缩矢量图) 1.0
MathML(Mathematical Markup Language,数学标记语言) 1.0
SMIL(Synchronized Multimedia Integration Language,同步多媒体集成语言)
Web 浏览器对 DOM 的支持



1.2.3 浏览器对象模型(BOM)

浏览器对象模型(BOM,Browser Object Model)提供可以访问和操作浏览器窗口的接口和方法
根本上讲,只处理浏览器窗口和框架,但人们习惯将针对浏览器的 JavaScript 扩展算作 BOM 的一部分,如 Cookie 支持、XMLHttpRequest 自定义对象等
一直没有相关的标准,每个浏览器都会在 BOM 实现中定义自己的属性和方法;直到 HTML 5 发布后,将很多 DOM 功能写入正式规范,BOM 实现细节有望朝兼容性越来越高的方向发展
BOM 包含以下扩展:

window 对象:弹出新浏览器窗口、移动、缩放和关闭浏览器窗口
navigator 对象:提供浏览器详细信息
location 对象:提供浏览器所加载页面的详细信息
screen 对象:提供用户显示器分辨率详细信息
对 cookie 的支持
像 XMLHttpRequest 和 IE 的 ActiveXObject 这样的自定义对象
1.3 JavaScript 版本

猜你喜欢

转载自zhyp29.iteye.com/blog/2303899