私は多くのXML操作を含むHTML5アプリケーションを作成しています。この操作の一部には、2つの異なるXML要素のバージョンの比較が含まれます。
必要なのは、バージョン情報が関連付けられた状態で作成され、通常のElement、Attr、またはTextNodeのように動作できるすべてのElement、Attr、およびTextNode(すべてNode、AFAIKから継承)オブジェクトです。バージョン情報を保存するために使用している現在の実用的なソリューションは次のとおりです。
Node.prototype.MyAppAnnotation = {
Version : null
};
これで、組み込み型の拡張は悪い形式と見なされることを理解しましたが、この手法を超えて、目的の機能を取得する方法がわかりません。ラッパーで公開されるノード関連のプロパティと関数が必要なため、ノードをラッパーにカプセル化できるとは思いません。ラッパー用にある種のパススルー関数を書くことができるかもしれませんが、それは本当に不格好なようです。
私が書いているアプリはHTML5アプリであり、最新のブラウザー(すべてが組み込みの拡張をサポートしている)でのみ実行する必要があるため、この手法が適切であると感じています。また、拡張オブジェクトに十分にあいまいな名前を付けることで、すべての名前の衝突(意図的な衝突を除く)を回避できます。また、GoogleのClosureライブラリを使用した継承ベースのソリューションについても検討しました。ただし、Element、Node、およびTextNodeには直接コンストラクターがないため(つまり、Documentオブジェクトから作成されているため)、この手法も機能しないようです。
誰かがa)Elementを拡張せずにこの効果を達成するためのエレガントな方法を推奨するか、b)この場合「組み込みを拡張しない」ルールを破るべきではないという説得力のある理由を提供できるかどうか疑問に思いました。
どうもありがとう、Jarabek