javascript - 某些 JavaScript 库是否使用原型(prototype)系统的动态方面?

标签 javascript prototype

使用原型(prototype)创建的 JavaScript 对象与其原型(prototype)保持“实时”连接,因此更改原型(prototype)也会影响从它创建的对象。

如果新创建的对象只是复制原型(prototype)中的所有内容然后忘记它,那么语言的语义会简单得多。当然,实际的底层实现可能更智能。

实时/动态连接的这个特性是否真的用在一些著名的 JavaScript 库或程序中?

编辑:我并不是说 JS 继承系统有缺陷,我只是想了解上述功能的好处。

最佳答案

当然可以。我认为此功能最突出的用途是向 jQuery 原型(prototype)(称为“插件”)动态添加方法,它公开为 jQuery.fn

我不明白为什么您认为“如果新创建的对象只是复制原型(prototype)属性,语言的语义会简单得多”。为什么会更简单?您可以使用该方法创建对象,使用 extend() 函数,但这会影响原型(prototype)继承的概念。

在 Javascript 中拥有非静态继承是核心特性之一。修改已生成实例的原型(prototype)对象非常有用:

  • 添加功能,如上所述。您可以仅在需要时加载整个插件。
  • 增强功能(有时)。这通常用于覆盖非标准行为
  • 真正改变他们(很少)。这可以与配置对象一起使用,配置对象继承自具有默认设置的对象。然后您可以更改默认设置,它们将适用于所有实例(至少适用于未覆盖相关属性的实例)。

关于javascript - 某些 JavaScript 库是否使用原型(prototype)系统的动态方面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10609822/

相关文章:

javascript - NVD3.js - 多线图表多个 x 轴

extjs - 如何在 ExtJS4 中为单例添加方法?

继承 T 的 typescript 泛型函数

javascript - 在函数之后运行原型(prototype)函数

javascript - 将键/值对添加到特定的 Javascript 对象

javascript - 如何更正复选框并显示是否已选中

javascript - 在实习生测试中包含 jQuery

javascript - 搜索后隐藏/显示 div

python - Python 作为系统和应用程序编程语言流行的主要原因是什么?

javascript - 为什么不调用原型(prototype)中声明的函数?