原型与类

时间:2008-10-26 01:08:54

标签: javascript oop prototype

Steve Yegge最近发布了interesting blog post关于他称之为通用设计模式的内容。在那里,他详细介绍了使用原型作为建模工具,而不是类。我喜欢与继承相比引入更少耦合的方式。但是,通过使用其他类而不是继承来实现类,这也可以通过类获得。是否有其他人有使用原型的成功故事,并且可以帮助解释使用原型与类相比有何优势。我想这归结为静态建模与动态建模,但更多的例子将非常受欢迎。

3 个答案:

答案 0 :(得分:13)

有一点有趣的是,很容易使基于原型的语言成为OO,但很难使OO语言基于原型。

除了你提到的构图与继承之外,还不完全清楚原型的OO会是什么样子。

原型语言使复杂的继承行为变得容易。您可以实施multiple inheritancemixin之类的行为,或者只是从一个对象中选择要添加到另一个对象的内容。

Wikipedia's article提到:“基于原型的编程的倡导者经常争辩说,基于类的语言鼓励开发模型首先关注类的分类和关系。相比之下,基于原型的编程被视为鼓励程序员专注于某些示例的行为,后来才担心将这些对象分类为原型对象,这些对象后来以类似于类的方式使用。“

这并不是说原型范例都是优点而不是缺点。如果OO更具限制性,那是因为它选择了。如果你不小心,我可以看到所有灵活性可能会给你带来麻烦。

答案 1 :(得分:3)

原型是一种继承形式,只是对象直接从其他对象继承属性和行为,而不是从其他类中继承其属性和行为。

例如,请查看prototype based language中任何面向对象的代码,例如JavaScript。

答案 2 :(得分:1)

对于那些感兴趣的人,NewtonScript是一种双语:你有原型而且你有课。您可以选择是从类,原型还是从两者继承。