当前位置: 代码迷 >> JavaScript >> Java中的委派VS串联
  详细解决方案

Java中的委派VS串联

热度:62   发布时间:2023-06-05 10:17:54.0

Javascript缺少类构造,但是您仍然可以通过许多不同的方式实现继承。

您可以通过利用原型创建构造函数来模拟类,从而通过委派实现继承。

最常见的方法是使用new关键字,但是您也可以实现object.create() 。

另外,您可以采用串联方法,将希望对象直接继承的行为复制到对象本身中,而不是将其[[prototype]]指向另一个对象。

JS中每种模式的优缺点是什么?

似乎许多专家都在倡导串联方法,例如Doug Crockford。 但是,此刻授权模式显然更受欢迎。

我知道,一般而言,级联方法将更加灵活,但是会消耗更多的内存,因为您的复制方法到处都是,而不仅仅是引用一个公共集合。

但是,我也知道V8引擎可以优化这些东西。

除了性能之外,还可以通过串联实现通过串联实现的任何功能吗? 例如,在委托中,我可以在超类中有一个实现一些基本功能的方法,而在我的子类方法中,我可以调用超类的方法,然后在返回最终结果之前进行一些特定于子类的计算。 我想不出一种方法,而不仅仅是使用不同的方法名称,就可以使用级联方法。

主要区别是对象大小和灵活性。 继承属性而不是复制它们会导致对象变小,尤其是在您的方法API相对较大的情况下。 而且,从仍然可以操纵的单个对象继承属性要动态得多(请参阅 )。 与从静态对象继承相比,优化可能要更复杂,但比不共享对象之间的共享要快得多。