code: function () {
          var types = arguments[0];
          types = utils.trim(types).split(' ');
          for (var i = 0, ti; ti = types[i++];) {
              var listeners = getListener(this, ti),
                  r, t, k;
              if (listeners) {
                  k = listeners.length;
                  while (k--) {
                      if(!listeners[k])continue;
                      t = listeners[k].apply(this, arguments);
                      if(t === true){
                          return t;
                      }
                      if (t !== undefined) {
                          r = t;
                      }
                  }
              }
              if (t = this['on' + ti.toLowerCase()]) {
                  r = t.apply(this, arguments);
              }
          }
          return r;
      }
docs: 触发事件
  @method fireEvent
  @param { String } types 触发的事件名称，同时触发多个事件使用空格分隔
  @remind 该方法会触发addListener
  @return { * } 返回触发事件的队列中，最后执行的回调函数的返回值
  @example
  ```javascript
  editor.fireEvent("selectionchange");
  ```
   
  触发事件
  @method fireEvent
  @param { String } types 触发的事件名称，同时触发多个事件使用空格分隔
  @param { *... } options 可选参数，可以传入一个或多个参数，会传给事件触发的回调函数
  @return { * } 返回触发事件的队列中，最后执行的回调函数的返回值
  @example
  ```javascript
  
  editor.addListener( "selectionchange", function ( type, arg1, arg2 ) {
  
  console.log( arg1 + " " + arg2 );
  
  } );
  
  //触发selectionchange事件， 会执行上面的事件监听器
  //output: Hello World
  editor.fireEvent("selectionchange", "Hello", "World");
  ```