code: function(player, options, ready){
      this.player_ = player;
  
      // Make a copy of prototype.options_ to protect against overriding global defaults
      this.options_ = vjs.obj.copy(this.options_);
  
      // Updated options with supplied options
      options = this.options(options);
  
      // Get ID from options, element, or create using player ID and unique ID
      this.id_ = options['id'] || ((options['el'] && options['el']['id']) ? options['el']['id'] : player.id() + '_component_' + vjs.guid++ );
  
      this.name_ = options['name'] || null;
  
      // Create element if one wasn't provided in options
      this.el_ = options['el'] || this.createEl();
  
      this.children_ = [];
      this.childIndex_ = {};
      this.childNameIndex_ = {};
  
      // Add any child components in options
      this.initChildren();
  
      this.ready(ready);
      // Don't want to trigger ready here or it will before init is actually
      // finished for all children that run this constructor
  
      if (options.reportTouchActivity !== false) {
        this.enableTouchActivity();
      }
    }
docs: the constructor function for the class
  
  @constructor