什么是ECMAScript,与JavaScript是什么关系

以下是对http://bbs.csdn.net/topics/390236542和http://www.w3school.com.cn/js/pro_js_implement.asp#ECMAScript的摘抄

"ECMAScript是一套标准,定义了一种语言(假如A语言)是什么样子"也就是说它只是定义了接口,规则,然后由各大浏览器厂商去实现这些接口,根规则.具体的实现代码救在浏览器中,你是看不到的,比如Array.join()这个方法,ECMAScript只是定义,浏览器去具体实现

1,作为编程语言来说,你把标准看作是这种语言,对于使用来说基本没影响。这就象你学会了某种有特殊生产要求的汽车的驾驶(比如吊车,推土机),那么不管哪个厂商生产出来的,你都会操作,也只管操作就是了。哪怕你是汽车生产线上的工人,也只是按章办事。除非等你到了能设计汽车的时候(而不是象国内一些名厂那样只会照别人图纸稍加改动的进行生产),那应该还很遥远。

2,浏览器对ECMAScript的接口就是ECMAScript所规定的那些语法标准,你按照ECMAScript语法标准所写的东西,浏览器要能够把它解释执行出来。这就涉及上面的问题,ECMAScript本身并没有具体的统一的实现和实体,要由浏览器厂商完成。这就好像规定了一个标准的进销存管理系统应该有哪些必须的功能,然后各个软件公司自己编写实现。所谓的扩展,就是这些公司出于各种考虑而在基本功能之外,另外增加的一些功能。比如IE有自己的滤镜和ACTIVEX机制等,而FF,CHROME也有一些自己的东西。当你针对它们编程时,可以使用那些特性,但对象改变了,就会失效或出错。常说的脚本兼容就是指这些标准化以外的东西。

3,进行实现的不是ECMAScript,而是按照ECMAScript标准进行实现了。“用工具”,“用标准”,都是用,具体哪个用,就得好好理解了。

就好比一部车,有发动机,有轮胎,有方向盘等等。这就是对车的一种标准化的定义

然后每个汽车生产厂商,可以做出不同性能,不同款式的车来。但归根结底,大家都有一样的东西。只是实现的方法不同。有的性能好点。比如自带导航了。这就好比进行扩展了

不管是javascript或才是jscript都只是对这套标准的一个扩展

我们用javascript去构造一些函数实现我们自己的功能,只是好比于我们是开车的人,你做的所有的事情都只是在你开的这部车允许你做的范围之内。你的车只是陆路上走走而已的,你不可能开着它在水下还跑得若无其事

大概就这么个意思吧

ECMAScript 并不与任何具体浏览器相绑定,实际上,它也没有提到用于任何用户输入输出的方法(这点与 C 这类语言不同,它需要依赖外部的库来完成这类任务)。那么什么才是 ECMAScript 呢?ECMA-262 标准(第 2 段)的描述如下:

“ECMAScript 可以为不同种类的宿主环境提供核心的脚本编程能力,因此核心的脚本语言是与任何特定的宿主环境分开进行规定的... ...”

Web 浏览器对于 ECMAScript 来说是一个宿主环境,但它并不是唯一的宿主环境。事实上,还有不计其数的其他各种环境(例如 Nombas 的 ScriptEase,以及 Macromedia 同时用在 Flash 和 Director MX 中的 ActionScript)可以容纳 ECMAScript 实现。那么 ECMAScript 在浏览器之外规定了些什么呢?

简单地说,ECMAScript 描述了以下内容:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 运算符
  • 对象

ECMAScript 仅仅是一个描述,定义了脚本语言的所有属性、方法和对象。其他语言可以实现 ECMAScript 来作为功能的基准,JavaScript 就是这样: