"baz" 有没有办-6ren">
gpt4 book ai didi

javascript - Coffeescript实例方法封装在一个Object中

转载 作者:行者123 更新时间:2023-12-03 11:16:20 26 4
gpt4 key购买 nike

假设我有一个 Coffeescript 类(class):

class Foo
MyMethodsBar: () => "bar"
MyMethodsBaz: () => "baz"

有没有办法封装这样的方法(不起作用):

class Foo
MyMethods:
bar: () => "bar"
baz: () => "baz"

所以我可以打电话:

f = new Foo()
f.MyMethods.bar()

问题是,当我像常规方法一样执行此操作时,this(或@)不是实例。

我尝试这样做是为了更干净的混合/关注。

谢谢,埃里克

最佳答案

不,这是不可能的,除非您在构造函数内创建 MyMethods 并将 this 绑定(bind)到方法。此时您几乎失去了使用类的好处。

这是因为当您通过 f.MyMethods.bar() 调用方法时,this 将引用 f.MyMethods。为了防止这种情况,您可以预先将 bar 绑定(bind)到特定对象。然而,目前您正在定义 barthis 应该引用的 Foo 实例 (f ) 尚不存在,因此您无法在构造函数之外绑定(bind)它。

您可以使用f.MyMethods.bar.call(f)调用该方法,但这相当麻烦。

关于javascript - Coffeescript实例方法封装在一个Object中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27327408/

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