I think it would be cool to be able to able to extend strings/primitive types too.

It's actually not possible to extend primitive types, and have them behave exactly the same way. Primitive types create
special native host objects. For example, the the array object updates the "length" property as items are set directly by index (like
myarray[10]=10). Extending primitive arrays would mean losing that ability. There is no way to replicate that in all older browsers (note: the various functions could still work however). Also, the native string constructor creates a character
array of the string contents, and that feature would be lost as well. Why? Because there is no way to apply constructors of primitive types to new user objects.

With new ES6 features, however, this may be possible to some degree (if not entirely), but it would not be backward compatible.