1

クラスを実装しようとしている次のJavaScriptを使用します。

function aClass(){
  this.prop1 = this.getProp1();
}

aClass.prototype.getProp1 = function(){
  // do some stuff
  return result;
}

その後、次のように使用できます。

var obj = new aClass();
alert(obj.prop1);

私が今やりたいことはこれです:

obj.prop1 = "some value";

もちろん、これはprop1をオーバーライドし、getProp1関数から生成された結果を取得できなくなります。

つまり、読み取りと書き込みを許可するプロパティを作成することは可能ですか?代わりに、検証の目的で両方の場合に関数を呼び出しますか?

希望する効果が得られる限り、ここにあるものとはまったく異なるアプローチに満足しています。

古いブラウザで動作する必要があります。

4

2 に答える 2

1

オブジェクトプロパティのゲッターとセッターを定義できます。ここここを参照してください。構文はプロパティの取得または設定と同じになりますが、コードはダム値の変更の代わりに実行されます。

実例

互換性の制約:IE<9では機能しません。

于 2012-09-28T10:57:34.600 に答える
0

古いJS実装に制限されていないと仮定すると、Object.definePropertyを使用できます。

于 2012-09-28T10:57:42.497 に答える