我正在尝试在我的 CoffeeScript 代码中创建一种全局的单例对象:
window.MyLib =
Foos: {}
Bars: {}
Client: ->
@_client ||= (
someVar = 'foo'
new ExpensiveClient(someVar)
)
# ...
MyLib.Client.performSomeAction()
但是,代码实际上需要我这样做:
MyLib.Client().performSomeAction()
如何解决实现惰性实例化的问题,而无需使用括号将其作为函数调用?
更新:或者,如果有一种方法可以实现某种“缺少方法”,该Client
函数可以返回一个将职责委托给实际客户端的对象,但仅在需要时实例化它。