如何定义从子类调用的父类方法定义该子类的方法?

时间:2014-02-02 22:43:32

标签: javascript coffeescript metaprogramming

我想做类似下面的事情,其中​​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

1 个答案:

答案 0 :(得分:1)

看起来你希望setupMethod是一个Ruby风格的宏,它将方法添加到Child1。您需要做的就是编辑Parent.setupMethod中的相应原型,例如:

class Parent
  @setupMethod: (name) ->
    @::[name] = -> # whatever needs to be done goes here...

在诸如Parent.setupMethod的类方法的上下文中,@将是类本身,而@::将是相应的JavaScript原型(即@::@直播的实例方法。然后将适当的属性添加到@::对象中,然后就完成了。

演示:http://jsfiddle.net/ambiguous/m2y22/