This will allow you to use mixins in your Backbone models, views, collections, and routers.
include = (mixins...) -> throw new Error('include(mixins...) requires at least one mixin') unless mixins and mixins.length > 0 for mixin in mixins for key, value of mixin @::[key] = value unless key is 'included' mixin.included?.apply(this) this Backbone.Model.include = Backbone.Collection.include = include Backbone.View.include = Backbone.Router.include = include
Then you can do:
Foo = # Executes when included included: -> @message = 'Hello World!' # This method will be mixed in bar: -> console.log @message class MyView extends Backbone.View @include Foo view = new MyView view.bar() # prints 'Hello World!