ffx*_*sam 6 javascript inheritance prototype
替代标题:"为什么这么多流行的JavaScript库使用伪经典继承而不是功能继承(工厂函数)?"
JavaScript:Good Parts建议使用工厂功能,以便您获得真正的方法和属性隐私.这是有道理的,所以我想知道为什么这么多现代JS库仍然使用伪造的经典继承(使用new关键字).与工厂功能相比,这条路线有一些技术优势吗?如果没有,它只是一种风格选择吗?
编辑:这不是一个基于意见的帖子.我不是问哪个更好,我问的是伪古典继承有哪些技术优势超过功能,以了解为什么有人会选择那种风格.
编辑2:伪古典的几个优点我可以看到:
console.log是原型的实例时,它会显示它所实例化的对象的名称.instanceof查看实例是否来自特定对象,这是工厂函数无法实现的.让我们重点关注您的示例。我不认为工厂功能是必需的,尽管由于您所说的原因,它们可能是首选。例如,您可以使用显示模块模式将信息与新信息一起隐藏。
这是对该模式的合理解释的链接。 http://jargon.js.org/_glossary/REVEALING_MODULE_PATTERN.md
我认为这实际上只是对一种模式相对于另一种模式的偏好,在这种情况下揭示了模式与工厂。人们的信息很可能是孤立的,并且不同的理论在不同的地方占主导地位。你只看到了辩论的一部分,并想知道为什么每个人都没有做 X 而不是 Y,他们大多是在试图满足类似的担忧。
您会发现静态类型语言中大量避免使用 new,其中由于强类型,依赖关系变得更加令人担忧。您还会从函数式程序员、过程式编程和面向对象编程中得到不同的答案。我认为 javascript 的一个有趣的方面是它让来自各种语言背景的人们都接触到它。
我也确实认为,就 javascript 而言,人们更加重视组合而不是继承。React 是此类倡导的一个很好的例子