I tried not to use __proto__ (which is a non-standard). But, in my alternatives, length doesn't work properly, and therefore .map, .forEach, .concat, ... don't work properly too.

We need to check whether we are ok using this code, knowing we only use it in a controlled environment. After all, the above code works like a charm. :)

I've talked with @rwldrn and I learned ES6 will have a smarter object initialization. On ES5, it is not possible to subclass a built-in. But, ES6 will eventually make it possible.

I wonder if we can leave a TODO note above stating that as long as our env supports ES6, we rewrite it in the proper way.