gpt4 book ai didi

namespaces - 未捕获的 ReferenceError : namespace is not defined when namespacing in coffeescript

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

大家好:我正在尝试创建一个命名空间,以便我可以在整个应用程序中的不同 CoffeeScript 文件中使用一个类(至少这是我对命名空间用途的理解)

我在这里找到了一个很好的例子:Classes within Coffeescript 'Namespace'

摘抄:

    namespace "Project.Something", (exports) ->
exports.MyFirstClass = MyFirstClass
exports.MySecondClass = MySecondClass

但是,当我实现这一点时,我得到:命名空间未在我的控制台中定义。

我的命名空间完全按照上面示例中的外观实现。似乎我的命名空间定义以某种方式没有被 coffeescript 识别。

有任何想法吗?这里可能有版本控制问题之类的吗?

提前致谢!!!

最佳答案

namespace该问题的功能:

namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top

不是 CoffeeScript 的一部分,您必须自己定义该助手。大概你不想在每个文件中重复它,所以你会有一个 namespace.coffee包含 util.coffee 的文件(或 namespace 或 ...)定义。但是接下来您会遇到获取 namespace 的问题。函数进入全局命名空间。您可以 do it by hand :
namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top

(exports ? @).namespace = namespace
# or just (exports ? @).namespace = (target, name, block) -> #...

演示: http://jsfiddle.net/ambiguous/Uv646/

或者你可以变得时髦并使用 namespace将自己置于全局范围内:
namespace = (target, name, block) -> #...
namespace '', (exports, root) -> root.namespace = namespace

演示: http://jsfiddle.net/ambiguous/3dkXa/

完成其中之一后,您的 namespace函数应该随处可用。

关于namespaces - 未捕获的 ReferenceError : namespace is not defined when namespacing in coffeescript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10484872/

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