应当这样编写 JavaScript 代码吗?
您已经看到JavaScript可以很好地支持面向对象的编程。尽管它是一种基于原型的语言,但它的灵活性和强大功能可以满足在其它流行语言中常见的基于类的编程风格。但问题是:是否应当这样编写JavaScript代码?在JavaScript中的编程方式是否应当与C#或C++中的编码方式相同?是否有更聪明的方式来模拟JavaScript中没有的功能?每种编程语言都各不相同,一种语言最佳的做法,对另一种语言而言则可能并非最佳。
在JavaScript中,您已经看到对象继承对象(与类继承类不同)。因此,使用静态继承层次结构建立很多类的方式可能并不适合JavaScript。也许,就像Douglas Crockfork在他的文章Prototypal Inheritance in JavaScript中说的那样,JavaScript编程方式是建立原型对象,并使用下面的简单函数建立新的对象,而后者则继承原始对象:
function object(o)
{
function F()
{
F.prototype = o;
return new F();
}
}
然后,由于JavaScript中的对象是可延展的,因此可以方便地在创建对象之后,根据需要用新字段和新方法增大对象。
这的确很好,但它不可否认的是,全世界大多数开发人员更熟悉基于类的编程。实际上,基于类的编程也会在这里出现。按照即将颁发的ECMA-262规范第4版(ECMA-262是JavaScript的官方规范),JavaScript2.0将拥有真正的类。因此,JavaScript正在发展成为基于类的语言。但是,数年之后JavaScript2.0才可能被广泛使用。同时,必须清楚当前的JavaScript完全可以用基于原型的风格和基于类的风格读取和写入JavaScript代码。
探讨了JavaScript的面向对象编程特点,对比了基于类和基于原型的编程方式,并介绍了如何利用原型来实现继承。此外,还讨论了JavaScript的发展趋势,即计划在未来的版本中引入真正的类。

被折叠的 条评论
为什么被折叠?



