博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript简介
阅读量:5863 次
发布时间:2019-06-19

本文共 3946 字,大约阅读时间需要 13 分钟。

Talk is cheap,Show me your code.

JavaScript的历史

1995年,Netscape公司的Brenda Eich为Netscape Navigator 2开始着手开发一种名为LiveScript的脚本语言(同时在浏览器和服务器中使用,在服务器上的名字叫LiveWire)。为按期完成开发,Netscape与Sun公司建立了开发联盟。

1996年,在Netscape Navigator 2发布前夕,Netscape为蹭热度临时改名LiveScript为JavaScript。因为JavaScript 1.0获得巨大成功,Netscape在Netscape Navigator3中发布了JavaScript 1.1。微软在IE3中加入名为JScript的脚本语言(这样命名是为避开与Netscape有关的授权问题,此时的JScript基于Netscape JavaScript 1.0开发),此时JavaScript有了两个不同版本。
1997年,以JavaScript 1.1为蓝本定义JavaScript标准的建议提交给了ECMA(欧洲计算机制造商协会)。ECMA指定39号技术委员会(TC39,由来自Netscape、Sun、微软、Borland等公司的程序员组成)负责标准化一种通用、跨平台、供应商中立的脚本语言的语法和语义。 TC39经数月完成了ECMA-262——定义一种名为ECMAScript的新脚本语言的标准。
1998年,ISO/IEC(国际标准化组织和国际电工委员会)也采用ECMAScript作为标准(即ISO/IEC-16262)。自此,ECMAScript成为浏览器开发商各自实现JavaScript的基础。

JavaScript的实现

一个完整的JavaScript实现由核心(ECMAScript)、文档对象模型(DOM)和浏览器对象模型(BOM)组成。

ECMAScript

由ECMA-262定义的ECMAScript不包含输入输出定义,ECMA-262定义的只是ECMAScript的基础,在此基础之上可以构建更完善的脚本语言。

ECMAScript的宿主环境不仅有Web浏览器,还包括Node(服务端JavaScript平台)和Adobe Flash。宿主环境不仅提供基本的ECMAScript实现,同时也会提供该语言的扩展,以便改语言与环境之间对接交互。这些扩展利用ECMAScript的核心类型和语法提供更多更具体的功能,以便实现针对环境的操作。

ECMA规定内容

ECMAScript就是对实现该标准规定的各个方面内容的语言的描述,大致上它规定了这门语言的下列组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

ECMAScript版本

  1. ECMA-262第1版在本质与Netscape的JavaScript 1.1相同,只是删除了所有针对浏览器的代码并作了小改动(支持Unicode从而支持多语言开发,对象变为平台无关的)。
  2. ECMA-262第2版更新是为了与ISO/IEC-16262保持严格一致,没有任何新增、修改和删除处理。
  3. ECMA-262第3版才是第一次真正的修改,修改了字符串处理、错误定义和数值输出,新增对正则、新控制语句、try-catch的支持及其他小的修改。第3版标志ECMAScript成为一门真正的编程语言。
  4. ECMA-262第4版进行了一次全面检核修订,新标准不仅包含强类型变量、新语句和新数据结构、真正的类和经典继承,还定义了数据交互的新方式。由于跨越过大,ECMA-262第4版在发布前夕被放弃。
  5. ECMA-262第5版源自第3版,力求澄清第3版中已知歧义并增添了新的功能(包括原生JSON对象、继承的方法和高级属性定义),还包含一种严格模式,对ECMAScript引擎解释和执行代码进行了补充说明。ECMA-262第5版本来是ECMAScript 3.1,是因为考虑到第4版相对第3版跨越太大而另外设计的较少改进的版本。

ECMAScript兼容

要想成为ECMAScript的实现,则该实现必须做到:

  • 支持ECMA-262描述的所有类型、值、对象、属性、函数以及程序语法和语义
  • 支持Unicode字符标准

兼容的实现还可以进行下列扩展:

  • 添加ECMA-262没有描述的类型、值、对象、属性、函数,主要指该标准中没有规定的新对象和对象的新属性
  • 支持ECMA-262没有定义的程序和正则表达式语法

浏览器对ECMAScript的支持

浏览器 ECMAScript兼容性
Netscape Navigator 2 -
Netscape Navigator 3 -
Netscape Navigator 4~4.05 -
Netscape Navigator 4.06~4.79 第1版
Netscape 6+(Mozilla 0.6.0+) 第3版
IE 3 -
IE 4 -
IE 5.5~7 第3版
IE 8 第5版(不完全兼容)
IE 9+ 第5版
Opera 6~7.1 第2版
Opera 7.2+ 第3版
Safari 1~2.0.x 第3版(不完全兼容)
Safari 3.x 第3版
Safari 4.x~5.x 第5版(不完全兼容)
Chrome 1+ 第3版
Firefox 1~2 第3版
Firefox 3.0.x 第3版
Firefox 3.5~3.6 第5版(不完全兼容)
Firefox 4.0+ 第5版

文档对象模型DOM

DOM(Document Object Model)是针对XML但经过扩展用于HTML的API(应用程序编程接口)。

DOM把整个页面映射为一个多层节点结构,HTML或XML页面中的每个组成部分都是某种类型的节点,节点包含着各种类型的数据。借助DOM提供的API,开发人员可以轻松删除、添加、替换或修改任何节点。
因为IE4和Netscape Navigator 4分别支持不同形式的DHTML(Dynamic HTML),这增加了开发人员使代码兼容不同浏览器的负担,因此负责制定Web通信协议的W3C(万维网联盟)制定了DOM规范,DOM Level 1成为W3C的推荐标准。

DOM级别

  1. DOM Level 1由DOM Core(规定如何映射基于XML的文档结构)和DOM HTML(在核心上添加了针对HTML的对象和方法)组成。
  2. DOM Level 2在原来的基础上扩充了鼠标和用户界面事件、范围、遍历等细分模块,而且通过对象接口增加了对CSS的支持。
  3. DOM Level 3进一步扩展了DOM,引入了以统一方式加载保存文档的方法,新增了验证文档的方法,对DOM核心进行了扩展,开始支持XML 1.0规范。
  4. DOM Level 0是不存在的,它只是一个参照点,即IE4和Netscape Navigator 4最初支持的DHTML。

其他DOM标准

下面列出的语言都是基于XML的,每种语言的DOM标准都添加了与特定语言相关的新方法和新接口:

  • SVG(可伸缩矢量图)1.0
  • MathML(数学标记语言)1.0
  • SMIL(同步多媒体集成语言)

XUL(XML用户界面语言)也开发了自己的DOM实现,但是没有成为W3C的推荐标准。

Web浏览器对DOM的支持

浏览器 DOM兼容性
Netscape Navigator 1.x~4.x -
Netscape 6+(Mozilla 0.6.0+) 1级、2级(几乎全部)、3级(部分)
IE 2~4.x -
IE 5 1级(最小限度)
IE 5.5~8 1级(几乎全部)
IE 9~9.9 1级、2级、3级
Opera 1~6 -
Opera 7~8.x 1级(几乎全部)、2级(部分)
Opera 9~9.9 1级、2级(几乎全部)、3级(部分)
Opera 10+ 1级、2级、3级(部分)
Safari 1.0.x 1级
Safari 2+ 1级、2级(部分)
Chrome 1+ 1级、2级(部分)
Firefox 1+ 1级、2级(几乎全部)、3级(部分)

浏览器对象模型BOM

BOM只处理浏览器窗口和框架,但是人们习惯把所有针对浏览器的JavaScript扩展算作BOM的一部分。开发人员使用BOM可以控制浏览器显示的页面以外的部分。

BOM作为JavaScript实现的一部分却没有相关的标准,因此每个浏览器都会有各自的实现,这既是BOM与众不同的地方,也是它经常导致问题的地方。直到HTML5把很多BOM功能写入正式规范,这个问题才得到解决。

JavaScript版本

浏览器 JavaScript版本
Netscape Navigator 2 1.0
Netscape Navigator 3 1.1
Netscape Navigator 4 1.2
Netscape Navigator 4.06- 1.3
Netscape 6+(Mozilla 0.6.0+) 1.5
Firefox 1 1.5
Firefox 1.5 1.6
Firefox 2 1.7
Firefox 3 1.8
Firefox 3.5 1.8.1
Firefox 3.6 1.8.2

只有Netscape/Mozilla浏览器才遵循这种编号模式,大多数浏览器对JavaScript的支持情况都以ECMAScript兼容性和对DOM的支持情况为准。

转载于:https://www.cnblogs.com/zhangjun2013551829/p/8028000.html

你可能感兴趣的文章
NYOJ236心急的C小加
查看>>
[LeetCode] Unique Paths
查看>>
InstallShield 2010打包
查看>>
在src文件中寻找短信数据库表
查看>>
java的getClass()函数
查看>>
JS 身份证校验
查看>>
查询被占用的端口
查看>>
SharePoint2013 Workflow Manager配置
查看>>
Nginx 1.2.6 稳定版发布
查看>>
Astar算法框架
查看>>
Socket心跳包理解历程
查看>>
checkbox,复选框垂直居中
查看>>
ecshop:商品分类页和文章分类页添加自定义分类title,不填为空时默认为当前分类名称...
查看>>
spring中注入数组
查看>>
关于EXCHANGE的WHITE SPACE和从MAILDATABASE导出用户邮件到PST文件
查看>>
【转载★架构】百万级访问量网站的技术准备工作
查看>>
Percona XtraDB Cluster 5.5.29-23.7.1
查看>>
Python Decorator Closure
查看>>
有效预防.NET应用程序OOM的经验备忘
查看>>
div模拟的小窗口
查看>>