一些JavaScript库是否使用原型系统的动态方面?

Aiv*_*var 1 javascript prototype

使用原型创建的JavaScript对象维护与其原型的"实时"连接,因此更改原型也会影响从其创建的对象.

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

实时/动态连接的这个功能是否在一些众所周知的JavaScript库或程序中实际使用?

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

Ber*_*rgi 5

一定.我认为这个功能最突出的用途是动态地将方法添加到jQuery原型(称为"插件"),它被公开为jQuery.fn.

我无法理解为什么你认为"如果新创建的对象只是复制了原型属性,那么语言的语义就会简单得多".为什么这会更简单?您可以使用extend()函数创建具有该方法的对象,但这会在头部敲击原型继承的概念.

它是在Javascript中具有非静态继承的核心功能之一.修改已生成的实例的原型对象非常有用:

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