Replying to [comment:15 rwaldron]:
When native feature is available, it is the ''only'' true way to do things and is preferred over pure script implementation anyway. Native implemenation is at least much more likely to work correctly than pure-script one.
For example, boolean attribute selector ('INPUT[autofocus]') in jQuery works only in browsers that support native querySelector() (see bug 5637). And this is not because native feature is ''faster'' or not at all, but because this is ''native''.
An exception for preferring native implementation is when this is ''entirely'' (in ''any'' use case) and ''considerably'' (by more than, say, 1.5x) slower than pure-script one. (Though, even in that case, native implementation may get faster in future versions of browsers while pure-script one will most likely not.)
As for classList() method you've mentioned, then, in my opinion, this might only ''return'' list of element classes. For ''adding'' multiple classes as JS-array, just regular addClass() should be used (impossibility to add classes as Array object is actually drawback of current addClass() method).