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

PacificRack(年付低至19美元),夏季促销PR-M系列和多IP站群VPS主机

这几天有几个网友询问到是否有Windows VPS主机便宜的VPS主机商。原本他们是在Linode、Vultr主机商挂载DD安装Windows系统的,有的商家支持自定义WIN镜像,但是这些操作起来特别效率低下,每次安装一个Windows系统需要一两个小时,所以如果能找到比较合适的自带Windows系统的服务器那最好不过。这不看到PacificRack商家有提供夏季促销活动,其中包括年付便宜套餐的P...

RackNerd 2022春节促销提供三款年付套餐 低至年付10.88美元

RackNerd 商家我们应该是比较熟悉的商家,速度一般,但是人家便宜且可选机房也是比较多的,较多集中在美国机房。包括前面的新年元旦促销的时候有提供年付10美元左右的方案,实际上RackNerd商家的营销策略也是如此,每逢节日都有活动,配置简单变化,价格基本差不多,所以我们网友看到没有必要囤货,有需要就选择。RackNerd 商家这次2022农历新年也是有几款年付套餐。低至RackNerd VPS...

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

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

w3c验证为你推荐
点击mediathinkphp什么是THINKPHP 和 MVC的概念thinkphpthinkphp框架有什么功能及使用方法centos6.5centos 6.5 安装哪些软件cisco2960配置思科2960G交换机如何将配置百兆改为千兆配置特朗普吐槽iPhone为什么这么多人讨厌苹果呢?iPhone配置不足但是iOS流畅度确实很高很强大,性能领先几乎所有国产什么是支付宝支付宝是什么意思?2828商机网千元能办厂?28商机网是真的吗?灌水机谁知道哪个好点的灌水机的地址?谷歌新漏洞谷歌浏览器真的有沙箱吗?真的不中毒?
域名升级访问中 域名主机空间 vps侦探 主机屋 godaddy主机 站群服务器 omnis 美国便宜货网站 godaddy续费优惠码 域名优惠码 ev证书 php免费空间 最好的空间 好看qq空间 宁波服务器 1美金 四核服务器 多线空间 电信托管 环聊 更多