javascript 2.0

javascript 2.0,javascript,Javascript,我花了很多时间学习如何在Javascript中实现OOP,就像1999年的ECMA262一样:现在我想知道是否有人认为新的JS2.0很快就会到来,我很高兴 因为这个新版本将以一种经典的方式(Java等)实现OOP,并且将是接口、泛型和其他经典语言功能,所以研究是无用的 所以我必须停下来等待 谢谢我认为当前的Javascript版本中有足够的现有代码,即使今天发布了一些新的JS版本,仍然值得学习当前版本的工作原理。Javascript 2已经死了。将有ECMAScript 3.1,它将主要以澄清、

我花了很多时间学习如何在Javascript中实现OOP,就像1999年的ECMA262一样:现在我想知道是否有人认为新的JS2.0很快就会到来,我很高兴 因为这个新版本将以一种经典的方式(Java等)实现OOP,并且将是接口、泛型和其他经典语言功能,所以研究是无用的

所以我必须停下来等待


谢谢

我认为当前的Javascript版本中有足够的现有代码,即使今天发布了一些新的JS版本,仍然值得学习当前版本的工作原理。

Javascript 2已经死了。将有ECMAScript 3.1,它将主要以澄清、安全增强和库更新为特色,还有ECMAScript Harmony,它是ECMAScript 4(又名JavaScript 2)的替代品。不过,对于Harmony来说,ES4计划中的许多事情已经不再讨论。

因为重量级人物都以类似的方式(Java、.Net、Python)进行OOP,我想任何事情都不会遵循类似的方法。由于这些语言已经完成了大量的工作,因此需要大量的培训来巩固集体思维中的这些过程,在这一点上似乎不需要太多的改变。

Javascript是一种使用基于原型的继承的动态类型脚本语言

正是这些属性使它区别于Java、C#,并使它特别适用于web开发。为什么有人想要或需要将它转换成另一个Java或C#,他们已经做得很好了


所以,现在学习Javascript是非常值得的。更深入地学习Javascript实际上帮助我更好地理解动态语言(来自C#,C++),甚至还有一些需要掌握的地方。

您仍然应该了解OOP在当前版本的Javascript(ECMAScript)中是如何工作的。ECMAScript 3.1引入了一整套静态对象函数,包括继承

实际上,您已经可以在当前JavaScript中实现Object.create()函数(代码由Douglas Crockford编写):


不过,请注意,您不需要一直使用OOP。如果OOP有意义,那么就使用它,如果没有,就使用它。

我强烈建议您按照原样学习JavaScript。无论发生什么变化,您迟早都会被迫处理历史用法,如果您是一名web开发人员,这种情况可能非常常见。我还推荐Crockford's,因为它涵盖了所有继承模式,并去除了不应该使用的坏东西。

正如Christoph所说,JS2.0已经过时了。正如Herms所说,有足够的代码,绝对值得学习当前版本。JavaScript是一种非常容易学习、快速学习任何语言中OOP基础知识的方法。你不是在徒劳地学习,我为你的学习喝彩!我建议你继续读下去。

我喜欢那本书。非常好的推荐!作为一名网络开发者,我完全不同意你的观点。一些原型功能很好,但OO支持总体上很糟糕,更强大的OO功能(如接口、泛型等)将使其有用。这就是为什么我要学习GoogleWebToolkit,这样我就可以使用Java编写javascript“成为一名web开发人员”,然后你就有很多关于“真正的OO”设计的知识,以及它的优点和缺点。在过去的12年里,我两种类型都做过,所以我觉得我可以看到硬币的两面。静态类型,“真正的OO”与动态类型“轻松的OO”。“一种美丽、优雅、轻量级和高度表达力的语言隐藏在一堆热气腾腾的善意和错误之下”请参见此处:对于一个稍微不同的版本,它不会为将来来到这里的读者创建不必要的函数对象:ECMAScript 3.1现在是ECMAScript 5,现在是最终草案。是规格位置。ECMAScript Harmony很可能是ES6,而JS2将是Mozilla人员决定的任何版本。@Sean:您链接到的版本没有数据;当前值可从以下位置获得:
if (typeof Object.create !== 'function') {
    Object.create = function (o) {
        function F() {}
        F.prototype = o;
        return new F();
    };
}

// you can now do this
newObject = Object.create(oldObject);