该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
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
功能应该随处可用。