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

RackNerd 黑色星期五5款年付套餐

RackNerd 商家从2019年上线以来争议也是比较大的,一直低价促销很多网友都认为坚持时间不长可能会跑路。不过,目前看到RackNerd还是在坚持且这次黑五活动也有发布,且活动促销也是比较多的,不过对于我们用户来说选择这些低价服务商尽量的不要将长远项目放在上面,低价年付套餐服务商一般都是用来临时业务的。RackNerd商家这次发布黑五促销活动,一共有五款年付套餐,涉及到多个机房。最低年付的套餐...

数脉科技:六月优惠促销,免备案香港物理服务器,E3-1230v2处理器16G内存,350元/月

数脉科技六月优惠促销发布了!数脉科技对香港自营机房的香港服务器进行超低价促销,可选择30M、50M、100Mbps的优质bgp网络。更大带宽可在选购时选择同样享受优惠,目前仅提供HKBGP、阿里云产品,香港CN2、产品优惠码续费有效,仅限新购,每个客户可使用于一个订单。新客户可以立减400元,或者选择对应的机器用相应的优惠码,有需要的朋友可以尝试一下。点击进入:数脉科技官方网站地址数脉科技是一家成...

RackNerd美国大硬盘服务器促销:120G SSD+192TB HDD,1Gbps大带宽,月付$599,促销美国月付$服务器促销带宽

racknerd怎么样?racknerd最近发布了一些便宜美国服务器促销,包括大硬盘服务器,提供120G SSD+192TB HDD,有AMD和Intel两个选择,默认32G内存,1Gbps带宽,每个月100TB流量,5个IP地址,月付$599。价格非常便宜,需要存储服务器的朋友可以关注一下。RackNerd主要经营美国圣何塞、洛杉矶、达拉斯、芝加哥、亚特兰大、新泽西机房基于KVM虚拟化的VPS、...

w3c验证为你推荐
亿元企业http404未找到"HTTP 404 未找到"的错误如何对付?_dell服务器bios设置dell R410服务器 bios设置参数如何恢复出厂设置?波音737起飞爆胎为什么客机每次起飞都要先跑一段距离字节跳动回应TikTok易主抖音字节跳动是什么意思?flashfxp下载怎样用FlashFXP从服务器下载到电脑上?购物车通过自己的体会总结购物车的作用tumblr上不去安卓手机版steam打不开是为什么香港空间香港有哪些购物场所团购程序团购的具体流程是什么?仿佛很简单便捷的样子?
info域名注册 万网域名代理 日本私人vps 美国vps 域名服务器是什么 cn域名个人注册 flashfxp怎么用 bandwagonhost xfce 服务器怎么绑定域名 轻量 网通ip 阿里云浏览器 200g硬盘 ebay注册 我的世界服务器ip 秒杀品 国外免费云空间 攻击服务器 hdchina 更多