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

Digital-VM:服务器,$80/月;挪威/丹麦英国/Digital-VM:日本/新加坡/digital-vm:日本VPS仅$2.4/月

digital-vm怎么样?digital-vm在今年1月份就新增了日本、新加坡独立服务器业务,但是不知为何,期间终止了销售日本服务器和新加坡服务器,今天无意中在webhostingtalk论坛看到Digital-VM在发日本和新加坡独立服务器销售信息。服务器硬件是 Supermicro、采用最新一代 Intel CPU、DDR4 RAM 和 Enterprise Samsung SSD内存,默认...

Hostio€5/月KVM-2GB/25GB/5TB/荷兰机房

Hostio是一家成立于2006年的国外主机商,提供基于KVM架构的VPS主机,AMD EPYC CPU,NVMe硬盘,1-10Gbps带宽,最低月付5欧元起。商家采用自己的网络AS208258,宿主机采用2 x AMD Epyc 7452 32C/64T 2.3Ghz CPU,16*32GB内存,4个Samsung PM983 NVMe SSD,提供IPv4+IPv6。下面列出几款主机配置信息。...

DMIT(季度$28.88)调整洛杉矶CN2 GIA优化端口

对于DMIT商家已经关注有一些时候,看到不少的隔壁朋友们都有分享到,但是这篇还是我第一次分享这个服务商。根据看介绍,DMIT是一家成立于2017年的美国商家,据说是由几位留美学生创立的,数据中心位于香港、伯力G-Core和洛杉矶,主打香港CN2直连云服务器、美国CN2直连云服务器产品。最近看到DMIT商家有对洛杉矶CN2 GIA VPS端口进行了升级,不过价格没有变化,依然是季付28.88美元起。...

w3c验证为你推荐
checkmyiobit企业推广企业营销活动主要包括哪些内容?字节跳动回应TikTok易主一部电影讲一个小伙子去继承遗产结果是一批雪橇狗男主吹口哨声明不是雪地狂奔可信网站可信网站 是自己去注册的还是由做网站 的人帮弄的?灌水机谁知道哪个好点的灌水机的地址?无忧代理网无忧考网怎么样discuz7.0如何建立Discuz!7.0.0论坛邮件管理系统邮件管理软件哪种最好?顽固木马专杀工具金山顽固病毒木马专杀 xia zai hou zen me hai shi da bu kai ?
怎样注册域名 naning9韩国官网 vultr美国与日本 精品网 正版win8.1升级win10 免费网络电视 网站挂马检测工具 韩国名字大全 鲁诺 怎么建立邮箱 银盘服务 厦门电信 创建邮箱 台湾google 秒杀品 优惠服务器 香港打折信息 低价 paypal登陆 跟踪路由 更多