The source code

    /**
     * @ignore
     * simple custom event object for custom event mechanism.
     * @author yiminghe@gmail.com
     */
    KISSY.add('event/custom/object', function (S, Event) {

        /**
         * Do not new by yourself.
         *
         * Custom event object.
         * @class KISSY.Event.CustomEventObject
         * @param {Object} data data which will be mixed into custom event instance
         * @extends KISSY.Event.Object
         */
        function CustomEventObject(data) {
            CustomEventObject.superclass.constructor.call(this);
            S.mix(this, data);
            /**
             * source target of current event
             * @property  target
             * @type {KISSY.Event.Target}
             */
            /**
             * current target which processes current event
             * @property currentTarget
             * @type {KISSY.Event.Target}
             */
        }

        S.extend(CustomEventObject, Event._Object);

        return CustomEventObject;

    }, {
        requires: ['event/base']
    });