【发布时间】:2012-12-19 19:42:12
【问题描述】:
我正在使用面向对象的 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
当我在User class 上调用find() 时,我希望它将User 的实例而不是RedisObject 传递给回调函数。
我试图通过获取调用该方法的实际类的类名来实现这一点
@constructor.name
并使用eval() 从中生成一个实例 - 但问题是子类将在超类中未定义。
如何根据调用的类来实现由find 方法返回的不同类型实例的行为,而不必在每个子类中重写它?
【问题讨论】:
标签: javascript oop node.js inheritance coffeescript