gpt4 book ai didi

javascript - 协作 coffeescript 服务/类(class)

转载 作者:行者123 更新时间:2023-11-30 13:13:30 28 4
gpt4 key购买 nike

我有两个类,一个依赖于另一个。它是这样实现的:

class myns.ClassA
constructor(@serviceB): ->

publicFunctionA: ->
privateFunctionB.call this

privateFunctionB = ->
@serviceB.someFunction()

然后我在一个胶片中实例化它:

myns.classA = new myns.ClassA(myns.serviceB)

并用作:

myns.classA.publicFunctionA()

这里的问题是我想从 privateFunctionB 访问 serviceB。除了使用 call 之外,还有更合适的方法吗?

或许我的整个方法都被我的 Java 背景污染了太多?我需要的是相互依赖的代码模块,某种类似于单例服务的代码模块。我知道我可以使用 coffeescript 类函数并避免实例化,但是如何以干净的方式处理注入(inject) serviceB?

最佳答案

您可以将 ClassA 实例作为参数而不是 this 传递给私有(private)函数。如果您将每个类保存在它们自己的文件中,然后在没有 --bare 选项的情况下进行编译,我建议将该私有(private)函数放在类之外并将其用作普通函数(它将对文件保密,因此无需担心将内容泄露到外面):

privateFunctionB = (a) ->
a.serviceB.someFunction()

class myns.ClassA
constructor(@serviceB): ->

publicFunctionA: ->
privateFunctionB @

如果您不喜欢将函数放在文件的顶层,您也可以将它放在类中(我更喜欢将它放在那里,因为我认为它只是一个简单的函数更容易理解)。

关于javascript - 协作 coffeescript 服务/类(class),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12977565/

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