日期:2014-05-16  浏览次数:20474 次

ECMAScript 与 JavaScript的联系
这两天再看javascript高级教程:http://www.w3school.com.cn/js/pro_js_implement.asp

这里面讲了ECMAScript与javascript的关系,看了之后理解的还是不太清楚。
希望大家能帮我解答一下这些问题。

1,ECMAScript是一套标准或者规范,它定义了一种脚本语言的应该是什么样子,那么ECMAScript本身是一种脚本语言吗?

    我的理解是,首先ECMAScript是一套标准,定义了一种语言(假如A语言)是什么样子,然后呢,它又自己实现了A语言(A语言的语法、类型、语句、关键字、保留字、运算符、对象都是标准定义或者描述的那样。),然后呢A语言的名字也叫ECMAScript,现在ECMAScript即是一套标准,又是一种脚本语言。

2,这句话更让我糊涂“每个浏览器都有它自己的 ECMAScript 接口的实现,然后这个实现又被扩展”,ECMAScript的接口是个啥东西,这些接口都是什么接口,操作什么的,这些接口和前面的标准是什么关系?

3,关于DOM,教程中有这么一句话:“Web 浏览器中的 DOM 已经用 ECMAScript 实现了,现在是 JavaScript 语言的一个很大组成部分”,这似乎说明ECMAScript是脚本语言,否则怎么会实现DOM的接口呢。

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

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

3,进行实现的不是ECMAScript,而是按照ECMAScript标准进行实现了。“用工具”,“用标准”,都是用,具体哪个用,就得好好理解了。
------解决方案--------------------
只是说的一种标准,一种规范。好比流水线生产东西,得按照一定的规范和流程去进行。差不多的意思
------解决方案--------------------
引擎不一样的,每个浏览器实现的方法不一样,要是都按照ECMA,就没那么多兼容性问题了,js程序员就省心多了~
------解决方案--------------------

不知道你为什么要来纠结这些东西

2楼的其实已经说得很清楚了

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

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

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

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

大概就这么个意思吧
------解决方案--------------------
ECMAScript既然是个标准,那么其实就类似于编程语言的接口,定义一套规范之后,各大浏览器厂商只要遵循这个规范就各自实现去吧,那么当然每个浏览器都做了一些扩展,即:规范里面没有的。