要素を拡張することに関して多くの議論があります。私の知る限り、これらが主な問題は、次のとおりです。JavaScript:要素のプロトタイプを拡張する
- それは他のライブラリ
- と競合する可能性DOMはそれがレガシーIE
- とそれを動作しません
- ルーチンには文書化されていない機能が追加されています :未来と競合する可能性は他のライブラリ、ドキュメントの変更を参照していない、と歴史的なブラウザの気にしていないプロジェクトを考えると
を変更
要素のプロトタイプを拡張しない理由がありますか。技術ここでは、これは便利である方法の例です:
Element.prototype.toggleAttribute=function(attribute,value) {
if(value===undefined) value=true;
if(this.hasAttribute(attribute)) this.removeAttribute(attribute);
else this.addAttribute(attribute,value);
};
私は合理的な説明を提供することなく、プロトタイプを拡張するの弊害について、あまりにも多くのコメントを見てきました。
注1:toggleAttribute
は今後追加される可能性のある種類のものであるため、上記の例はあまりにも明白です。議論のために、それがmanngoToggleAttribute
と呼ばれると想像してください。
注2:メソッドがすでに存在するかどうかのテストを削除しました。たとえそのようなメソッドが既に存在していても、それをオーバーライドする方がより予測可能です。いずれにせよ、ここでのポイントは、メソッドがまだ定義されておらず、実装されているのではなく、であると仮定しています。それがここのポイントです。
ありがとうございました
将来の互換性に問題があるかもしれません。追加している機能が将来標準の一部になる可能性があります。 – Timo
「技術的な理由」とまったく同じ意味ですか?いいえ、「要素」を拡張することは、あなたが把握したように、制御された環境でうまく動作します。 – Bergi
@TimoStaテストを含めるようにコードサンプルを変更しました。 – Manngo