如果我没有完全错的话,现在javascript中的每一个框架/库/方法都倾向于模仿基于OOP风格继承的类。原因似乎是人们认为基于类的OOP继承更容易理解,而且大多数程序员都知道OOP。
在我的经验中,我没有找到支持这两种观点的证据。我认为javascript原型继承是很好的(我怀疑将另一种范式强加给一种语言的有用性,而不是它所基于的范式)。我遇到的大多数开发人员在传统的OOP方面也不是很好。那么选择经典OOP风格继承而不是原型继承的原因是什么呢?
发布于 2009-05-04 20:58:53
我想答案就在你的问题中--大多数程序员更熟悉基于类的OOP而不是基于原型的。
事实上,我甚至可以说,大多数人不相信你可以在没有类的情况下拥有对象。
发布于 2009-05-04 21:51:47
请注意,即使你在争论基于原型的OOP,你也称它为“原型”,而基于类的OOP就是“OOP”。所以,你自己也受到这种偏见的困扰,思考OOP=>classes,prototypes =>其他的东西。
既然大多数人认为OOP是正确的方式,不管问题是什么,那么原型肯定是次要的。
所以,要回答你的问题,有两个因素:
由于您仍然受到第一种方法的约束,因此您试图解释原型是第二种方法的例外。纠正它们要容易得多:
- there are many ways to structure a programming solution, OOP are great at some and lousy at others.
发布于 2009-05-04 22:47:51
我觉得你好像已经知道了你的问题的答案,因为你在说的时候说了一部分
的原因似乎是人们认为基于类的OOP继承更容易理解,而且大多数程序员都知道OOP。
在解决问题时,这两种范式都不是最正确的。我相信最主要的原因是现在每个人都是通过Java来学习面向对象编程的。因此,当人们遇到OOP时,他们会想到“哦,类”,因为这是他们所熟悉的。每当他们想要解决一个问题时,他们很可能会使用他们所知道的。
我还想说,对于程序员来说,使用他不熟悉的范型是没有好处的。我们大多数人都必须使用javascript进行客户端web开发,并在服务器端使用基于类的OOP语言。我个人不希望在我不得不查看应用程序的javascript端时出现OOP阻抗不匹配的情况。
在某种程度上,每个人都在尝试在javascript中实现基于类的OOP,这是一个教育问题。在另一个层面上,这是一个心理上的问题。
https://stackoverflow.com/questions/822014
复制相似问题