第章正确认识ECMAScript5和JavaScript

w3c验证  时间:2021-04-13  阅读:()

2009年12月,ECMAScript5被批准通过,成为正式的标准,并被提交给ISO/IEC制定为国际标准,这是近几年来最重大的语言更新,作为万维网前端最重要的程序语言,ECMAScript5正迎来最大的发展机遇.

ECMAScript往往被称为JavaScript或JScript,JavaScript并为更多的开发者所熟知.
但是JavaScript仅仅是浏览器厂商的一个产品商标的名称,而真正的标准是ECMAScript,用户学习JavaScript,其实就是在学习ECMAScript.

各浏览器厂商对其支持的ECMAScript语言的称呼都不相同:(1)在Mozilla的Firefox浏览器中称为JavaScript.
(2)在Microsoft的IE浏览器中称为JScript.
(3)在Google的Chrome浏览器中称为JavaScriptV8.
(4)在Apple的Safari浏览器中称为JavaScriptCore.
(5)在Opera浏览器中则直接称为ECMAScript.
且所支持的版本号也不一致.
虽然本书名为《JavaScript权威指南——ECMAScript5+HTML5DOM+HTML5BOM》,其实是以ECMAScript5标准为主,包含了JavaScript、JScript、JavaScriptCore等5种实现.
1.
1ECMAScript和JavaScript的关系JavaScript最初由网景公司创建,名为LiveScript,后来才改名为JavaScript.
它经历过很多版本,Netscape2时为LiveScript,也被称为JavaScript1.
0,随着Netscape浏览器的不断更新,JavaScript的版本也不断更新.
后来,JavaScript被Netscape公司提交给ECMA(EuropeanComputerManufacturersAssociation,即欧洲计算机厂商协会)制定为标准,称为ECMAScript,标准编号为ECMA-262.
ECMA最初于1960年在布鲁塞尔由欧洲一些最大的计算机和技术公司成立,一开始是一个非正式组织.
1961年5月,它们决定成立一个正式的组织,该组织的目标是评估、开发、认可信息和通信技术标准以及消费类电子产品标准.

目前,ECMA总部设在日内瓦,以便于组织与之协同工作的标准制定组织更接近一些——国际标准化组织(ISO)和国际电子技术协会(IEC)的总部都在日内瓦.
读者可以通过网址http://www.
ecma-international.
org/了解ECMA组织的详细情况.

到目前为止,ECMA共制定了370多份标准,其中,ECMA-262是用于制定一个脚本语言开发的标准,该标准经过多次修改,前一个版本为ECMA-2623thEdition,符合该标准的语言实现和解释引擎至少包含下面几个:(1)Mozilla的JavaScript语言,解释引擎称为SpiderMonkey(使用C语言编写),在Firefox、Thunderbird中嵌入的JavaScript解释引擎都使用该实现.
另外,Mozilla还有一个Rhino解释引擎(使用Java语言编写),目前使用还较少.

(2)Microsoft公司的JScript,IE浏览器和服务端脚本ASP的解释引擎都使用JScript解释引擎.
(3)DigitalMars公司的DMDScript,使用其自己编写的解释引擎.
(4)Adobe公司的ActionScript,使用FlashPlayer作为解释引擎.
(5)Google的JavaScriptV8语言,使用Chrome浏览器中的V8引擎.
(6)Apple的JavaScriptCore语言,使用Safari浏览器中的JavaScriptCore引擎.
(7)Opera的ECMAScript语言,使用其浏览器中的引擎,并且随着浏览器不断升级,解释引擎也不断更新,在Opera10.
50中引入了Carakan引擎,同Google的V8一样可以实现JIT(Just-in-timeCompilation的缩写,实时编译),通过编译JavaScript源码为字节码来加速JavaScript的执行速度.
2009年12月,ECMA批准ECMA-262第5版作为第3版的后继版本(未发布过第4版),当前,所有主流浏览器都开始支持第5版的一些特性.
ECMAScript5为所有开发者提供了更好的功能,在给基库带来更新的同时,还引入了更加严格的运行时模型,来帮助定位并移除通常的代码错误.
1.
1.
1关于标准和实现在IT行业,特别是软件产业中,有两个非常重要的名词——标准和实现.
标准(standard)是由一个公认的机构制定和批准的文件.
它为活动或活动的结果规定了规则、导则或特殊值,可供共同和反复使用,以在预定领域内实现最佳的秩序效果.
有一些标准具有强制力,例如ISO(国际标准组织)制定的标准必须为其成员所遵守,且具有法定的约束力;另外一些标准则没有强制力,但具有很大的影响力,并且在很大程度上成为事实上的标准,如W3C(万维网联合会)制定的一些标准,这些标准一般被称为规范(specification),其中最著名的是HTTP协议,该协议实际上已经成为一种事实上的标准.

实现(implementation)则是按照标准和规范做出的.
例如,开发者按照HTTP协议开发出了一个浏览器程序,那么就称该浏览器程序为HTTP协议的一个实现,或者说该浏览器程序实现了HTTP协议.
如IE、Firefox、网景等浏览器都是HTTP协议的实现.

JScript、JavaScript、JavaScriptV8等遵守ECMA-262标准,它们是ECMA-262标准的一个实现;解释引擎如果遵守ECMA-262标准,也称为ECMA-262标准的实现.
如SpiderMonkey、FlashPlayer等都是ECMA-262标准的实现.
技巧与提示有些信息技术标准不具有法定约束力,所以很多厂商并不是完全遵守,而是部分采纳,以方便与其他厂商的产品互通.
为了实现自身的某些特殊需要,有时还会在标准基础上做一些扩展.
例如JavaScript、JScript、DMDScript等,都是部分遵守ECMA-262标准,并在该标准基础上扩展了自己某些特殊的功能.
目前,几乎所有的厂商都会这样做,但绝大多数功能都遵守相同的规范.

1.
1.
2JavaScript与ECMAScript版本的关系JavaScript的版本一直由浏览器厂商自行定义,过去,网景公司主导了JavaScript的发展,直到出现浏览器Netscape6,JavaScript发展到1.
5版本,此后,由于网景在与微软的浏览器大战中遭遇挫折,所以很长一段时间JavaScript都停滞不前,直到最近Firefox浏览器的出现,对JavaScript1.
5做了少许改进,经历1.
6版,至最新版本1.
8.
5(目前仅Firefox浏览器支持JavaScript1.
8.
5).
目前,JavaScript、JScript分别由Firefox和微软独立维护,都有自己的版本号,但与ECMAScript的版本有一个基本对应关系,如表1-1所示.
表1-1JavaScript、JScript与ECMAScript版本的对应关系JavaScriptJScriptECMA-262解释引擎实现1.
01.
0网景2.
0/IE3.
01.
12.
0网景3.
0/IIS3.
01.
2网景4.
0-4.
051.
33.
0V1/V2网景4.
06-4.
7x和IE4.
0IIS4.
0和IE4.
01.
4网景服务器产品4.
0VisualStudio6.
05.
0IE5.
05.
1IE5.
011.
55.
5V3Firefox1.
0网景6.
0IE5.
5Safari1.
0Chrome0.
3Opera7.
0续表JavaScriptJScriptECMA-262解释引擎实现5.
6IE6.
01.
6Firefox1.
51.
7Firefox2.
01.
8Firefox3.
05.
8IE8.
0V41.
8.
1V5Firefox3.
51.
8.
5Firefox4.
09.
0IE9.
01.
2有关JavaScript的认识目前,有关JavaScript的认识有很多都是片面的,下面对JavaScript的一些知识进行介绍.
1.
2.
1区分JavaScript和JScript很多人无法区分JavaScript和JScript,或者根本不去区分它们,这是不对的.
JavaScript和JScript都是ECMA-262的实现,JavaScript是网景公司开发的一种脚本语言;JScript是微软公司开发的另一种脚本语言,是该公司对ECMA-262语言规范的一种实现,除了少数例外(这是为了保持向后兼容),微软公司宣称JScript完全实现了ECMA标准.

JavaScript和JScript都既可以运行在客户端,也可以运行在服务端.
但无论是运行在客户端还是服务端,其解释引擎都不相同.
在服务端,JavaScript由网景公司的服务端解释引擎(Netscape服务器Livewire)解释,并不属于ASP语法;而JScript与VBScript使用相同的服务端解释引擎解释,属于ASP语法.

在客户端,JavaScript和JScript的解释引擎种类繁多,几乎每个浏览器都支持JavaScript,但很少有浏览器支持JScript,除了微软的IE.
技巧与提示JavaScript要比JScript早很多,ECMA-262规范也是根据JavaScript1.
1制定的.
后来,拥有操作系统优势的微软公司原本希望能以VBScript与JavaScript在客户端上一决高下,但是市场反应并不如预期.
不过微软公司很快改变策略,根据ECMA-262规范发布了JScript,并且让不断推陈出新的浏览器工具持续支持JScript版本的更新.
现在受IE9支持的JScript版本已是9.
0,而JavaScript目前使用广泛的版本是1.
5.
1.
2.
2JavaScript不是解释型Java语言Java语言是由著名的信息技术公司Sun发明的(目前Sun已经与Oracle公司合并),用于在客户端和服务端运行,它与JavaScript截然不同,除了语法上有一些近似外,并没有其他联系.

由于二者名称相近,很多人认为JavaScript是解释型的Java语言(InterpretiveJava),这是错误的.
在Netscape发展LiveScript的同时,Sun公司也正在发展Java语言,为了使双方都能受益,两家公司进行合作,Netscape将LiveScript语言改名为JavaScript,这就是JavaScript的由来.

JavaScript与Java的运行环境截然不同,使用Java语言开发的程序必须在JVM(Java虚拟机)内运行,而JavaScript一般在一个浏览器内或者其他的JavaScript解释引擎内运行.

1.
2.
3什么是脚本语言要了解JavaScript,首先要了解什么是脚本语言.
目前,动态的应用程序一般使用两种方式实现:二进制方式和脚本方式.
二进制(Binary)方式就是先将编写的程序代码编译为机器可识别的指令代码,然后再执行.
这种编译好的程序用户只能执行和使用,看不到原始程序的内容.
脚本(Script)方式是使用一种特定的描述性语言,依据一定的格式编写的文本文件.
简单地说,就是一条一条的文字命令,这些文字命令用户可以使用"记事本"程序看到.
脚本程序也是可执行文档,在执行时,由一个解释引擎(该解释引擎也是一个二进制的应用程序)将其逐条翻译成机器可识别的指令,并按程序顺序执行.
因为脚本在执行时多了一道翻译的程序,所以它比二进制程序的执行效率要稍低一些.
我们经常能看到的各种动态语言,如VBScript、JavaScript、JScript、PHP、CGI、JSP、CFML等,都是脚本语言.
1.
客户端脚本在脚本语言中,有些是作为客户端脚本语言来运行的,它们由客户端的解释引擎来解释.
例如VBScript、JavaScript、JScript等都可以作为客户端脚本语言,当它们被嵌入到HTML文件中时,可以按照顺序执行或者响应某个事件而对事件做出应答.
客户端脚本语言一般用来创建动画效果、执行简单的验证等,从而丰富了网页的呈现.

客户端脚本代码在客户端执行,可以在网页中增加动态效果和交互功能,丰富网页.
例如,下面是一些较常用的,实现动态效果和交互的简单功能:(1)当文档被加载到客户端后,文档中的脚本可以动态计算,从而动态地修改文档的内容.
(2)脚本可以用来获取表单控件中的输入数据.
一般,开发人员会使用这一功能来验证用户输入数据的有效性,如检测用户输入的密码是否至少6位长度等.
(3)脚本可以响应某些事件,这些事件包括加载、卸载、处理焦点、鼠标移动等.
(4)脚本可以和表单控件关联到一起,从而可以创建图形用户界面元素.
现在,用户总是利用客户端脚本程序实现富媒体客户端.
2.
服务端脚本另外一些脚本语言是作为服务端脚本语言来运行的,例如PHP、CGI、JSP、CFML等,它们由服务端的解释引擎来解释.
当作为服务端脚本语言来运行时,它们主要用来生成HTML内容,也可以动态生成客户端脚本.
当被传到客户端的浏览器中时,这些客户端脚本代码也可以被解释并实现特定的功能.

1.
2.
4区分客户端和服务端JavaScript一些脚本语言既可以用来编写客户端脚本代码,也可以用来编写服务端脚本代码,如JavaScript等.
但是,目前将JavaScript作为服务器端代码的开发语言已经很少用了,并且也仅用于网景公司开发的应用程序服务器NetscapeEnterpriseServer中,目前该应用程序服务器也已经很少有人使用了.
技巧与提示很多资料中介绍可以使用VBScript和JScript开发ASP,但ASP是一个服务端技术,这看起来有些冲突,其实不然.
ASP是一个技术统称,它可以使用VBScript或JScript来开发,因为使用VBScript和JScript既可以在服务端运行也可以在客户端运行,只要有其运行的环境(也就是解释器,或者称为解释引擎)即可,但要牢记,VBScript和JScript作为服务端脚本时,脚本的解释是由服务端的解释引擎进行的,这与客户端脚本的运行环境有明显的不同,根本不是处在一个物理位置.

GreenCloudVPS($30/年),500G大硬盘VPS,10Gbps带宽

GreenCloudVPS最近在新加坡DC2节点上了新机器,Dual Xeon Silver 4216 CPU,DDR4内存,10Gbps网络端口,推出了几款大硬盘VPS套餐,基于KVM架构,500GB磁盘起年付30美元。除了大硬盘套餐外,还加推了几款采用NVMe硬盘的常规套餐,最低年付20美元。不过需要提醒的是,机房非直连中国,尤其是电信用户ping值感人,包括新加坡DC1也是如此。大硬盘VPS...

提速啦(24元/月)河南BGP云服务器活动 买一年送一年4核 4G 5M

提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...

恒创新客(317元)香港云服务器 2M带宽 三网CN2线路直连

恒创科技也有暑期的活动,其中香港服务器也有一定折扣,当然是针对新用户的,如果我们还没有注册过或者可以有办法注册到新用户的,可以买他们家的香港服务器活动价格,2M带宽香港云服务器317元。对于一般用途还是够用的。 活动链接:恒创暑期活动爆款活动均是针对新用户的。1、云服务器仅限首次购买恒创科技产品的新用户。1 核 1G 实例规格,单个账户限购 1台;其他活动机型,单个账户限购 3 台(必须在一个订单...

w3c验证为你推荐
科研wordpressprohibitedleaning on the door prohibited什么用法(语法),不甚感激wordpress模板wordpress的模版怎么用360和搜狗360浏览器和搜狗浏览器哪个好用?360防火墙在哪里设置360安全防护中心在哪资费标准中国电信套餐资费一览表2021颁发的拼音发字的多音字组词爱买网超艾比安高达厉害吗,今天在网上看到的万代的果断入手了,168贵吗,不知道这款高达厉不厉害温州都市报招聘温州哪里有招暑期工?怎么去?要什么条件?急......团购程序团购的具体流程是什么?仿佛很简单便捷的样子?
ip反查域名 成都主机租用 cybermonday 主机 2014年感恩节 mediafire下载 抢票工具 ev证书 云图标 大容量存储 主机合租 免空 共享主机 33456 域名与空间 阿里云免费邮箱 免费个人主页 登陆qq空间 域名和主机 西部主机 更多