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
関数はどこでも使用できるようになります。