gpt4 book ai didi

javascript - Javascript 中的委托(delegate) VS 连接

转载 作者:行者123 更新时间:2023-12-03 09:27:18 26 4
gpt4 key购买 nike

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

您可以通过利用原型(prototype)创建构造函数来模仿类,从而通过委托(delegate)实现继承。

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

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

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

似乎许多专家都提倡串联方法,例如 Doug Crockford。然而,委托(delegate)模式目前显然更流行。

我知道,一般来说,串联方法会更灵活,但会消耗更多内存,因为您在各处复制方法而不仅仅是引用通用集。

但是,我也知道 V8 引擎有优化这些东西的方法。

除了性能之外,还有什么是可以通过委托(delegate)实现而通过串联实现的吗?例如,在委托(delegate)中,我可以在父类(super class)中拥有一个实现一些基本功能的方法,在我的子类方法中,我可以调用父类(super class)的方法,然后在返回最终结果之前执行一些特定于子类的计算。我想不出一种方法可以通过串联方法来做到这一点,而无需使用不同的方法名称。

最佳答案

主要区别在于对象大小和灵 active 。继承属性而不是复制它们会导致对象变小,特别是当您的方法 API 相对较大时。此外,从仍可操作的单个对象继承属性更加动态(请参阅 Does some JavaScript library use dynamic aspects of the prototype system? )。它可能比从静态对象继承更复杂,但它仍然比不在对象之间共享要快。

关于javascript - Javascript 中的委托(delegate) VS 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31629027/

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