I actually really like the prototype system, it makes introspection (also know as reflection) really easy. Surely class based has its advantages and I actually believe that could exist in a single system and be used where it is more appropriate. In my opinion once you start getting too big class hierarchies you should start using mixins and prototype based OO.
The only part of introspection that's easy is to figure out if a function is defined immediately on a class instance via `hasOwnProperty.` Everything else is very difficult.
For example, to build their dependency injection system AngularJS actually converts functions to source via `toString` then runs a regex on that to parse the count and names of function parameters so they can figure out what params to pass. This works (mostly, there are problems with minified code) but is a hack that pushes what should be compiler activity to runtime and slows startup.
That said - I agree with the rest of your comment. Towering class hierarchies are no ones friend and mixins allow for the quick creation of instances that would otherwise require one-off classes.