この記事を読むことをお勧めします。この記事では、Prototypeに関しても、オブジェクトの拡張が悪い考えである理由をかなりよく説明しています。
要約すれば:
仕様の欠如
「プロトタイプオブジェクト」の公開は、仕様の一部ではありません。[...]実装がDOMレベル2に完全に準拠するために、それらのグローバルNode、Element、HTMLElementなどのオブジェクトを公開する必要はありません。
ホストオブジェクトにはルールがありません
DOMオブジェクトはホストオブジェクトです[...]ホストオブジェクトは、これらの内部メソッドを実装依存の動作で実装することも、ホストオブジェクトが一部の内部メソッドのみを実装し、他のメソッドを実装しないこともあります。
[...]内部メソッドの動作は実装に依存します。[...]定義により、予測不可能で完全に不安定な方法で動作することが許可されているものを使用しています。
衝突の可能性
現在使用されている膨大な量の環境を考えると、特定のプロパティがまだ一部のDOMの一部ではないかどうかを判断することは不可能になります。[...]
すべての名前付きフォームコントロールは、プロトタイプチェーンを通じて継承されるプロパティをシャドウします。フォーム要素での衝突や予期しないエラーの可能性はさらに高くなります。
ある種のプレフィックス戦略を採用すると、問題を軽減できます。ただし、おそらく余分なノイズも発生します。
パフォーマンスのオーバーヘッド
[...] IE 6、7、Safari 2.xなどの要素拡張機能をサポートしていないブラウザには、手動のオブジェクト拡張機能が必要です。問題は、手動での拡張が遅く、不便で、拡張できないことです。
[...]要素の拡張を開始すると、ライブラリAPIはおそらく拡張要素をどこにでも返す必要があります。その結果、$$などのクエリメソッドは、クエリ内のすべての要素を拡張することになります。
IE DOMは混乱です
前のセクションで示したように、手動のDOM拡張は混乱です。しかし、IEの手動DOM拡張はさらに悪い[...]
おまけ:ブラウザのバグ
for(var ... in ...)
、プロトタイプ関数も渡されるため、ループがめちゃくちゃになることです。