我想做类似下面的事情,其中Parent.setupMethod将在子类(仅)上创建两个实例方法以及类方法。这可能吗?
class Parent
@setupMethod: (name) ->
# do whatever to setup method on calling class
class Child1 extends Parent
@setupMethod "someMethod"
class Child2 extends Parent
child1 = new Child1
child2 = new Child2
child1.someMethod # some output
child2.someMethod # undefined
答案 0 :(得分:1)
看起来你希望setupMethod
是一个Ruby风格的宏,它将方法添加到Child1
。您需要做的就是编辑Parent.setupMethod
中的相应原型,例如:
class Parent
@setupMethod: (name) ->
@::[name] = -> # whatever needs to be done goes here...
在诸如Parent.setupMethod
的类方法的上下文中,@
将是类本身,而@::
将是相应的JavaScript原型(即@::
是@
直播的实例方法。然后将适当的属性添加到@::
对象中,然后就完成了。