on(key, fn) {
    if (typeof this.__$events[key] === 'undefined') this.__$events[key] = [];
    this.__$events[key].push(fn);
    return fn;
  }
@param {string} key
@param {function} fn
@returns {function}