1

オブジェクトのプロパティを関数でオーバーライドして、オブジェクトのプロパティが呼び出されるたびに関数を呼び出して結果を返すようにしたいと考えています。

確かに、これは JS などの動的言語で可能になるはずですか?

環境:

IE のみのコードを他のブラウザに移植しようとしています。このコードは、XML ドキュメントの解析とクエリのために "Microsoft.XMLDOM" オブジェクトを広範囲に使用します。IE 以外のブラウザで標準の DOMParser を使用したいと考えています。問題は、Microsoft の実装が XML 要素の非標準の「テキスト」プロパティを公開していることです。このプロパティはコードベースで広く使用されています。Element プロトタイプに同等の機能を追加したいと考えています。

Element.prototype.text = function() {...}

コードベースが「myelem.text」を実行するとき、実際には関数を実行せず、関数へのポインターを返すだけなので、機能しません。

これを機能させるにはどうすればよいですか?

4

2 に答える 2

1

最新の Javascript (たとえば、IE 以外のもの) では、Object.definePropertyまさにそれを行うことができます。

Object.defineProperty(Element.prototype, 'text', {
    'get': function() {
        return this.getText();
    },
    'enumerable': true
});
于 2012-07-29T01:36:22.640 に答える
0

関数への外部引数が必要ない場合は、次のように、関数を定義した後に実行できます。

Element.prototype.text = (function() {...})();

次に、電話した後

Element.text

関数から戻り値を取得します。

于 2012-07-29T00:49:44.703 に答える