第章正确认识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作为服务端脚本时,脚本的解释是由服务端的解释引擎进行的,这与客户端脚本的运行环境有明显的不同,根本不是处在一个物理位置.

Gcore(75折)迈阿密E5-2623v4 CPU独立服务器

部落分享过多次G-core(gcorelabs)的产品及评测信息,以VPS主机为主,距离上一次分享商家的独立服务器还在2年多前,本月初商家针对迈阿密机房限定E5-2623v4 CPU的独立服务器推出75折优惠码,活动将在9月30日到期,这里再分享下。G-core(gcorelabs)是一家总部位于卢森堡的国外主机商,主要提供基于KVM架构的VPS主机和独立服务器租用等,数据中心包括俄罗斯、美国、日...

HostDare($33.79/年)CKVM和QKVM套餐 可选CN2 GIA线路

关于HostDare服务商在之前的文章中有介绍过几次,算是比较老牌的服务商,但是商家背景财力不是特别雄厚,算是比较小众的个人服务商。目前主流提供CKVM和QKVM套餐。前者是电信CN2 GIA,不过库存储备也不是很足,这不九月份发布新的补货库存活动,有提供九折优惠CN2 GIA,以及六五折优惠QKVM普通线路方案。这次活动截止到9月30日,不清楚商家这次库存补货多少。比如 QKVM基础的五个方案都...

WHloud Date鲸云数据($9.00/月), 韩国,日本,香港

WHloud Date(鲸云数据),原做大数据和软件开发的团队,现在转变成云计算服务,面对海内外用户提供中国大陆,韩国,日本,香港等多个地方节点服务。24*7小时的在线支持,较为全面的虚拟化构架以及全方面的技术支持!官方网站:https://www.whloud.com/WHloud Date 韩国BGP云主机少量补货随时可以开通,随时可以用,两小时内提交退款,可在工作日期间全额原路返回!支持pa...

w3c验证为你推荐
厦门金龙联合汽车工业有限公司招标项目phpweb破解wifi破解黑科技在线代理怎么样设置代理,让别人看我的IP是别的地方,不是我真实的IP?cuteftpCuteFTP的主要功能是什么?重庆400年老树穿楼生长生长百年的老树,仍能不断生长,是因为主要有什么组织重庆杨家坪猪肉摊主杀人重庆一市民发现买的新鲜猪肉晚上发蓝光.专家解释,猪肉中含磷较多且携带了一种能发光的细菌--磷光杆菌时360arp防火墙在哪360ARP防火墙360免费建站聚企360建站是免费的?网站方案设计网站文案策划怎么写开源网店开源网店iWebMall中会员管理包括哪些只要内容呢?
便宜的虚拟主机 中国十大域名注册商 ipage 80vps 12u机柜尺寸 圣诞节促销 如何用qq邮箱发邮件 免费dns解析 网游服务器 万网主机管理 smtp虚拟服务器 linode支付宝 贵阳电信测速 wordpress中文主题 lamp兄弟连 国外免费云空间 阿里云邮箱申请 七牛云存储 博客域名 聚惠网 更多