为什么是类基OO如此受欢迎的,而不是基于原型OO?他们教导后者在学校吗?虽然Javascript是基于原型,大多数人使用的主要功能上,或通过框架的尝试仿效的一类基础的系统。

我知道,太阳已经有了一些研究 自我 -是否有任何其他来源的知识,在原型的基础oo?最好的东西是可供自学。

我找到一本书包含发表的文件: 原型的基于程序:概念、语言和应用程序

有人读过吗?

--

所以我给了慷慨的回答,给了我最多。仍然,我真的不满意。我希望听到更多的技术答案。也许我没有解释自己。

有帮助吗?

解决方案

原型继承的优点是,它潜在地允许花式元编程以简单的方式,因为原型链易于操作。这是一个相当的学术优势,因为元编程的时间出现在错误的答案99%。举个例子,你可以有一个特殊的DSL一个Javascript键 - 值观察员风格的数据操作层,一个本地SQLite背衬之间透明地切换时,离线和在线时,基于REST的服务器存储通过原型交换。我不知道这是做到这一点的最好办法,但它是我能想出这么晚是最好的。它不是那种事情,你一般要在项目代码做,因为这种间接的是地狱,一旦你开始了怎么回事多层调试,但是当你把它放在一个库这不是坏的。

另一个不太有用的好处是,它可以让你设计自己的等级制度。我少说有帮助,因为或多或少都javascript库都有自己的一点点不兼容的方式,以“类”如何放在一起。

有很多人回答谁是混合在该模型中实现语言的继承模型。 JavaScript是动态的,弱类型的,因此很难工具的事实无关,它是一个原型的语言。

其他提示

如果你正在找人指出优势/每个为他们的大众化解释的缺点,我想你爱上了一个谬论,其技术是出于某种原因很常见的 - 那普及的东西做质量的某种绝对度量。

事实上是一个很大的平淡 - 基于类的面向对象是受欢迎,因为Java使用经典的OO,和Sun花了数百万美元和很长的时间来构建Java的普及 - 确保人们知道它成功地应用于企业,教广泛在大学和高中AP测试。

原型/古典OO是组织你的想法只是方式不同。您可以实现一个在语言不支持它本身( Python的的Java 浮现在脑海中,和上的JavaScript 另一侧)。

在经典的OO,你定义的类的抽象层次为对象,然后实际上这些类的实例工作。在原型继承,创建对象实例的层次结构。虽然我想这可能是两方阵营有点旁门左道,我没有看到一个原因,你不能将两者搅和......

我不知道这种情况的确切原因,但这里有我的原因。

我觉得这个争论是一样的动态VS静态的,一类是对象的静态清晰度,可以很容易地用了才知道,从一个对象会发生什么,它也有助于工具的语言有适当的IntelliSense支持和文档,因为你可以很容易地知道什么是该对象中的不同成员和方法,另一件事是具有在不对象上显示类声明私有成员的能力的不同的模式,这不能做在原型范例

原型范例是好的,但是它缺乏的能力用于提供关于在对象,这使得更难加工的方法和成员的信息,并且它也使对动态类型的编程更有意义。

这个问题让我很感兴趣,所以我回去看了一些关于这个概念的原始论文。它出现在80年代中期已开始在Smalltalk的世界,但最终成为的创始负责人之一。更晚的Javascript也采用了。

在报纸上提出的论点是,它更容易学习。实在是比学习其他建议没有技术优势。各报都说明它是如何只是作为一个基于类的语言表现力,但更容易学习。人们自然就想到的事情以一种具体的方式,而不是抽象的。我们认为我们在动物园,而不是一个普通的“大象”看到了大象。当我们看到其他大象,我们把它们归类为从第一个不同之处。基于原型的语言有利于这一思想。把它看成是通过差编程。

是一个足够的理由在语言中使用它?也许。在25年第一的思想开始渗透,我认为像基于类的OO是抽象的概念一直没有太硬对大多数人学习。在另一方面或许也需要一个蓝领的编程语言(如Javascript),这是更容易,这可能是实现这一目标的方式。

如果有兴趣,你可能会关于自我本文启动。

我真的不想写一篇关于原型的继承再这样我就链接你去我以前的文章。你要知道,他们都是很长的,但值得阅读:

  1. 利益的原型继承过古典?
  2. 为什么原型的继承事项

我觉得不同的是在功率动态(原型)语言给你。 JavaScript中,同样喜欢LISP,给人几乎无限的权力,一个程序员。这种权力只能由程序员的责任和他的自信心水平的限制。所以,讨论的是一样古老,因为它是 - 同样的静态类型与无类型。如果你认为你的编程能力和自律足够强大 - 去为原型的风格

复述一个名言:

人才做什么,他可以(阅读:类为主),天才做他想要什么(阅读:基于原型)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top