答案 0 :(得分:13)
有一点有趣的是,很容易使基于原型的语言成为OO,但很难使OO语言基于原型。
除了你提到的构图与继承之外,还不完全清楚原型的OO会是什么样子。
原型语言使复杂的继承行为变得容易。您可以实施multiple inheritance,mixin之类的行为,或者只是从一个对象中选择要添加到另一个对象的内容。
Wikipedia's article提到:“基于原型的编程的倡导者经常争辩说,基于类的语言鼓励开发模型首先关注类的分类和关系。相比之下,基于原型的编程被视为鼓励程序员专注于某些示例的行为,后来才担心将这些对象分类为原型对象,这些对象后来以类似于类的方式使用。“
这并不是说原型范例都是优点而不是缺点。如果OO更具限制性,那是因为它选择了。如果你不小心,我可以看到所有灵活性可能会给你带来麻烦。
答案 1 :(得分:3)
原型是一种继承形式,只是对象直接从其他对象继承属性和行为,而不是从其他类中继承其属性和行为。
例如,请查看prototype based language中任何面向对象的代码,例如JavaScript。
答案 2 :(得分:1)
对于那些感兴趣的人,NewtonScript是一种双语:你有原型而且你有课。您可以选择是从类,原型还是从两者继承。