gpt4 book ai didi

javascript - 基于原型(prototype)的 OO 与基于类的 OO 相比有哪些优势?

转载 作者:搜寻专家 更新时间:2023-11-01 03:55:40 25 4
gpt4 key购买 nike

为什么基于类的 OO 而不是基于原型(prototype)的 OO 如此受欢迎?他们在学校教后者吗?尽管 Javascript 是基于原型(prototype)的,但大多数人主要在功能上使用它,或者通过试图模拟基于类的系统的框架。

我知道 Sun 对 Self 有一些研究- 关于基于原型(prototype)的面向对象还有其他知识来源吗?最好是可以自学的东西。

我找到一本包含已发表论文的书:Prototype-Based Programming: Concepts, Languages and Applications

有人读过吗?

--

因此,我悬赏了给我最多的答案。尽管如此,我还是不太满意。我希望听到更多技术性的答案。可能我没有解释清楚。

最佳答案

原型(prototype)继承的优势在于它可能允许以一种直接的方式进行奇特的元编程,因为原型(prototype)链很容易被操纵。这是一个相当学术的优势,因为元编程在 99% 的情况下都是错误的答案。例如,您可以拥有一个带有特殊 DSL 的 Javascript Key-Value Observer 样式的数据操作层,该 DSL 可以在离线时透明地在本地 SQLite 支持和在线时通过原型(prototype)交换在基于 REST 的服务器存储之间切换。我不确定这是最好的方法,但这是我这么晚能想到的最好的方法。这不是您通常希望在项目代码中做的事情,因为一旦您开始在多个层上进行这种间接寻址就很难调试,但是当您将它保存在库中时它还不错。

另一个不太有用的优点是它允许您设计自己的类系统。我说不太有用,因为或多或少所有 javascript 库在“类”的组合方式上都有自己稍微不兼容的方法。

有很多人将继承模型与在该模型中实现的语言混合在一起进行回复。 javascript 是动态的和弱类型的,因此很难使用工具这一事实与它是一种原型(prototype)语言无关。

关于javascript - 基于原型(prototype)的 OO 与基于类的 OO 相比有哪些优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7159163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com