Ti suggerisco di leggere questo articolo che credo spieghi piuttosto bene perché estendere gli oggetti è una cattiva idea, anche per quanto riguarda Prototype.
In breve:
Mancanza di specifiche
Exposure of "prototype objects" is not part of any specification.
[...] In order for implementation to conform to DOM Level 2 fully,
there's no need to expose those global Node, Element, HTMLElement,
etc. objects.
Gli oggetti host non hanno regole
DOM objects are host objects [...] Host objects may implement these
internal methods with any implementation-dependent behaviour, or it
may be that a host object implements only some internal methods and
not others.
[...] Internal methods behavior is implementation-dependent. [...] By
definition, you are working with something that's allowed to behave in
unpredictable and completely erratic way.
Possibilità di collisioni
Given huge amount of environments in use today, it becomes impossible
to tell if certain property is not already part of some DOM. [...]
Every named form control shadows properties inherited through
prototype chain. The chance of collisions and unexpected errors on
form elements is even higher.
Employing some kind of prefixing strategy can alleviate the problem.
But will probably also bring extra noise.
Carico delle prestazioni
[...] browsers that don’t support element extensions—like IE 6, 7,
Safari 2.x, etc.—require manual object extension. The problem is that
manual extension is slow, inconvenient and doesn’t scale.
[...] once you start extending elements, library API most likely needs
to return extended elements everywhere. As a result, querying methods
like $$ could end up extending every single element in a query.
IE DOM è un pasticcio
As shown in previous section, manual DOM extension is a mess. But
manual DOM extension in IE is even worse [...]
Bonus: bug del browser