## TrackList

Common functionaliy between TextTrackList, AudioTrackList, and VideoTrackList

## Constructor

#### new TrackList(tracks, listopt)
`tracks/track-list.js`, `line 14`

  Create an instance of this class

  ##### Parameters:

  Name | Type | Attributes | Default | Description
  --- | --- | --- | --- | ---
  `tracks` | Array.<Track> |  |  | A list of tracks to initialize the list with.
  `list` | Object | <optional> | null | The child object with inheritance done manually for ie8.

### Extends

- EventTarget

### Members

#### length :number
`tracks/track-list.js`, `line 42`

  The current number of `Track`s in the this Trackist.

### Methods

#### addEventListener()
`event-target.js`, `line 74`

  An alias of EventTarget#on. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#addEventListener
  See:
    - EventTarget#on

#### addTrack(track)
`tracks/track-list.js`, `line 71`

  Add a Track to the `TrackList`

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `track` | Track | The audio, video, or text track to add to the list.

  ##### Fires:

  - TrackList#event:addtrack

#### dispatchEvent()
`event-target.js`, `line 159`

  An alias of EventTarget#trigger. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#dispatchEvent
  See:
    - EventTarget#trigger

#### off(type, fn)
`event-target.js`, `line 87`

  Removes an `event listener` for a specific event from an instance of `EventTarget`. This makes it so that the `event listener` will no longer get called when the named event happens.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to remove.

  Inherited From:
    - EventTarget#off

#### on(type, fn)
`event-target.js`, `line 57`

  Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a function that will get called when an event with a certain name gets triggered.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to call with `EventTarget`s

  Inherited From:
    - EventTarget#on

#### one(type, fn)
`event-target.js`, `line 111`

  This function will add an `event listener` that gets triggered only once. After the first trigger it will get removed. This is like adding an `event listener` with EventTarget#on that calls EventTarget#off on itself.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | An event name or an array of event names.
  `fn` | EventTarget~EventListener | The function to be called once for each event name.

  Inherited From:
    - EventTarget#one

#### removeEventListener()
`event-target.js`, `line 98`

  An alias of EventTarget#off. Allows `EventTarget` to mimic the standard DOM API.

  Inherited From:
    - EventTarget#removeEventListener
  See:
    - EventTarget#off

#### removeTrack(rtrack)
`tracks/track-list.js`, `line 108`

  Remove a Track from the `TrackList`

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `rtrack` | Track | The audio, video, or text track to remove from the list.

  ##### Fires:

  - TrackList#event:removetrack

#### trigger(event)
`event-target.js`, `line 137`

  This function causes an event to happen. This will then cause any `event listeners` that are waiting for that event, to get called. If there are no `event listeners` for an event then nothing will happen.

  If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`. Trigger will also call the `on` + `uppercaseEventName` function.

  Example: 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call `onClick` if it exists.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `event` | string | EventTarget~Event | Object | The name of the event, an `Event`, or an object with a key of type set to an event name.

  Inherited From:
    - EventTarget#trigger

### Events

#### addtrack
`tracks/track-list.js`, `line 85`

  Triggered when a track is added to a track list.

  ##### Type:

  - EventTarget~Event

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `track` | Track | A reference to track that was added.

#### change
`tracks/track-list.js`, `line 166`

  Triggered when a different track is selected/enabled.

  ##### Type:

  - EventTarget~Event

#### removetrack
`tracks/track-list.js`, `line 128`

  Triggered when a track is removed from track list.

  ##### Type:

  - EventTarget~Event

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `track` | Track | A reference to track that was removed.