Lots of code duplicated code between enableLoop and disableLoop, maybe add a *pseude-private* `_loopAll(Boolean loop)` method to the prototype, so you could just call `this._loopAll(true)` or `this._loopAll(false)`?

Though I'm not sure as `disableLoop` is not used at all anyway, and I'm not convinced we'll ever need it…

Also, you can use `[].forEach.call(arguments, fn, this)` to shorten a bit the code.