@mixes

描述:此对象混入了另一个对象中的所有成员。

语法

@mixes <OtherObjectPath>

概述

@mixes标签指示当前对象混入了OtherObjectPath对象的所有成员,被混入的对象就是一个@mixin

例子

首先,我们用@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...
    }
};

现在,我们添加一个FormButton类,并且调用"mix"函数,将Eventful的所有功能混入到FormButton,这样FormButton也可以触发事件和监听了。我们使用@mixes标签,以表明FormButton混入了Eventful的功能。

例如,使用@mixes标签:

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