Ich empfehle Ihnen, diesen Artikel zu lesen, der meiner Meinung nach ziemlich gut erklärt, warum das Erweitern von Objekten eine schlechte Idee ist, auch im Hinblick auf Prototype.
In Summe:
Fehlende Spezifikation
Die Belichtung von "Prototyp-Objekten" ist nicht Teil einer Spezifikation. [...] Damit die Implementierung vollständig mit DOM Level 2 übereinstimmt, müssen diese globalen Objekte Node, Element, HTMLElement usw. nicht verfügbar gemacht werden.
Hostobjekte haben keine Regeln
DOM-Objekte sind Host-Objekte. [...] Host-Objekte können diese internen Methoden mit jedem implementierungsabhängigen Verhalten implementieren, oder es kann sein, dass ein Host-Objekt nur einige interne Methoden und keine anderen implementiert.
[...] Das Verhalten interner Methoden ist implementierungsabhängig. [...] Per Definition arbeiten Sie mit etwas, das sich unvorhersehbar und völlig unberechenbar verhalten darf.
Möglichkeit von Kollisionen
In Anbetracht der großen Anzahl von Umgebungen, die heutzutage verwendet werden, ist es unmöglich festzustellen, ob bestimmte Objekte nicht bereits Teil eines DOM sind. [...]
Jedes benannte Formularsteuerelement beschattet Eigenschaften, die über die Prototypkette vererbt wurden. Die Wahrscheinlichkeit von Kollisionen und unerwarteten Fehlern bei Formularelementen ist noch höher.
Der Einsatz einer Präfixierungsstrategie kann das Problem lindern. Wird aber wohl auch extra Lärm bringen.
Leistungsaufwand
[...] Browser, die keine Elementerweiterungen unterstützen (z. B. IE 6, 7, Safari 2.x usw.), erfordern eine manuelle Objekterweiterung. Das Problem ist, dass die manuelle Erweiterung langsam, unpraktisch und nicht skalierbar ist.
Sobald Sie mit dem Erweitern von Elementen beginnen, muss die Bibliotheks-API höchstwahrscheinlich überall erweiterte Elemente zurückgeben. Daher können Abfragemethoden wie $$ jedes einzelne Element in einer Abfrage erweitern.
IE DOM ist ein Durcheinander
Wie im vorherigen Abschnitt gezeigt, ist die manuelle DOM-Erweiterung ein Durcheinander. Aber manuelle DOM-Erweiterung im IE ist noch schlimmer [...]
Bonus: Browser-Fehler
for(var ... in ...)
Schleifen durcheinander geraten, da auch Prototypfunktionen übergeben werden.