他の JavaScript ライブラリとの名前衝突を回避するため、名前空間を定義できるようにしてみる。
まず名前空間 Fx にクラスを定義する関数を用意。
@Fx = (fn) ->
klass = fn()
@Fx[klass.name] = klass
クラス定義は次のように行う。
@Fx -> class Person
constructor: (@firstName, @lastName) ->
...
使い方は予想通り。
person = new Fx.Person('John', 'Smith')
require.js とか使う方がいいのだろうか?