Skip to main content

@mixes

Syntax

@mixes <OtherObjectPath>

Overview

The @mixes tag indicates that the current object mixes in all the members from OtherObjectPath, which is a @mixin.

Examples

To start, we document a mixin with the @mixin tag:

Example of a @mixin

/**
* This provides methods used for event handling. It's not meant to
* be used directly.
*
* @mixin
*/
var Eventful = {
/**
* Register a handler function to be called whenever this event is fired.
* @param {string} eventName - Name of the event.
* @param {function(Object)} handler - The handler to call.
*/
on: function (eventName, handler) {
// code...
},

/**
* Fire an event, causing all handlers for that event name to run.
* @param {string} eventName - Name of the event.
* @param {Object} eventData - The data provided to each handler.
*/
fire: function (eventName, eventData) {
// code...
},
}

Now we add a FormButton class and call a "mix" function that mixes all of the Eventful functions into FormButton, so that FormButton can also fire events and have listeners. We use the @mixes tag to indicate that FormButton mixes the Eventful functions.

Using the @mixes tag

/**
* @constructor FormButton
* @mixes Eventful
*/
var FormButton = function () {
// code...
}
FormButton.prototype.press = function () {
this.fire('press', {})
}
mix(Eventful).into(FormButton.prototype)