有些东西一直困扰着我,我可能很愚蠢,但这是我的问题:
class GenericModel extends Backbone.Model
initialize: () ->
console.log 'one'
class SpecificModel extends GenericModel
initialize: () ->
console.log 'two'
我希望它说“一二”,而只是说“两个”,这是预期的,因为初始化方法被覆盖。显然,我可以将SpecificModel调用super
作为初始化的第一行,但是当在整个代码库中扩展具有许多其他类的类时,这可能变得相当丑陋,令人厌烦(我经常忘记这样做)。在我的真实案例中,我在泛型模型上有很多通用的事件绑定,然后是扩展它的模型上的特定操作代码,我宁愿不必在它们上面调用super,因为它只是让它很难跟踪绑定何时没有...绑定。
有没有办法让所有从类扩展继承的方法在其父级上自动调用super ?
由于
答案 0 :(得分:0)
coffeescript中的两种方式
使用coffeescript超级捷径(参见http://coffeescript.org/#classes)
class GenericModel extends Backbone.Model
initialize:() ->
console.log 'one'
class SpecificModel extends GenericModel
initialize:() ->
super()
console.log 'two'
或通过原型直接调用重写方法
class GenericModel extends Backbone.Model
initialize:() ->
console.log 'one'
class SpecificModel extends GenericModel
initialize:() ->
GenericModel::initialize.call(@,arguments)
console.log 'two'