オブジェクト指向のcoffeescriptを使用してNode.jsアプリケーションを構築しています。
私は次のsuper class
ような静的メソッドを持っています:
class RedisObject
@find: (id, cb) ->
client.HGETALL "#{@className()}|#{id}", (err, obj) =>
unless err
cb(new RedisObject(obj, false))
のようなサブクラスがあります。
class User extends RedisObject
を呼び出すときにfind()
、コールバック関数の代わりにのUser class
インスタンスを渡したいです。User
RedisObject
を使用してメソッドが呼び出される実際のクラスのクラス名を取得することで、これを実現しようとしました
@constructor.name
それからインスタンスを生成するために使用eval()
しますが、問題は、サブクラスがスーパークラス内から未定義になることです。
find
各サブクラスでオーバーライドすることなく、メソッドが呼び出されたクラスに応じて、メソッドによって返されるさまざまなタイプのインスタンスを取得する動作をどのように実現できますか?