lib/core/phaser.js
function Phaser(element) {
  check(element, 'element').is.anInstanceOf(Element)();

  var priv = {};
  priv.elem = element;
  priv.phase = null;
  priv.listeners = [];
  priv.phaseTriggers = new MultiMap();
  priv.started = false;

  var pub = {};
  var methods = [
    getPhase,
    nextPhase,
    addPhaseListener,
    removePhaseListener,
    addPhaseTrigger,
    removePhaseTrigger,
    startTransition,
  ];

  // This trick binds all methods to the public object
  // passing `priv` as the first argument to each call.
  methods.forEach(function(method) {
    pub[method.name] = method.bind(pub, priv);
  });

  return pub;
}
function Phaser(element) {
  check(element, 'element').is.anInstanceOf(Element)();

  var priv = {};
  priv.elem = element;
  priv.phase = null;
  priv.listeners = [];
  priv.phaseTriggers = new MultiMap();
  priv.started = false;

  var pub = {};
  var methods = [
    getPhase,
    nextPhase,
    addPhaseListener,
    removePhaseListener,
    addPhaseTrigger,
    removePhaseTrigger,
    startTransition,
  ];

  // This trick binds all methods to the public object
  // passing `priv` as the first argument to each call.
  methods.forEach(function(method) {
    pub[method.name] = method.bind(pub, priv);
  });

  return pub;
}
function Phaser ( element ) { check ( element , 'element' ) . is . anInstanceOf ( Element ) ( ) ; var priv = { } ; priv . elem = element ; priv . phase = null ; priv . listeners = [ ] ; priv . phaseTriggers = new MultiMap ( ) ; priv . started = false ; var pub = { } ; var methods = [ getPhase , nextPhase , addPhaseListener , removePhaseListener , addPhaseTrigger , removePhaseTrigger , startTransition , ] ; // This trick binds all methods to the public object // passing `priv` as the first argument to each call. methods . forEach ( function ( method ) { pub [ method . name ] = method . bind ( pub , priv ) ; } ) ; return pub ; }
Creates Phaser.

This constructor has no side-effects. This means that no ${link Phase phase class name}
is set on given **element** and no eventlistener is set after calling it. For phaser to start
doing some work, ${link Phaser.prototype.setPhase}, ${link Phaser.prototype.startTransition}
or ${link Phaser.prototype.addPhaseTrigger} must be invoked.

@param {Element} element container DOM element that will receive proper phase class names
@fqn Phaser.prototype.constructor
Creates Phaser .