gpt4 book ai didi

javascript - 扩展时如何合并而不是替换对象

转载 作者:行者123 更新时间:2023-12-03 12:14:25 25 4
gpt4 key购买 nike

class A
constructor:
//dosomething
loadFunctions:
loadDrillingCharges: (memoize) ->


class B extends A
constructor:
super()
loadFunctions:
loadLockDDR: (memoize) ->

(new B).loadFunctions 将是一个仅具有 loadLockDDR 属性的对象

我希望 (new B).loadFunctions{ loadDrillingCharges: -> , loadLockDDR: -> }

我可以_.extend(B::loadFunctions, A::loadFunctions),但它并不优雅。

我尝试使用 cocktail mixin但它搞砸了 super()

如何在扩展后合并对象而不搞砸 coffescript super。

最佳答案

CoffeeScript 本身不支持 Mixins,原因很充分:您可以轻松地实现它们。例如,这里有两个函数,extend() 和 include(),分别将类和实例属性添加到类中:

extend = (obj, mixin) -> obj[name] = method for name, method of mixin  objinclude = (klass, mixin) -> extend klass.prototype, mixin# Usageinclude Parrot, isDeceased: true(new Parrot).isDeceased

关于javascript - 扩展时如何合并而不是替换对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795544/

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