私のタイトルはちょっと変わっているように見えますが、私は自分がやろうとしていることを正確に説明しようとしました。オブジェクトがあるとしましょう:
function testObj(data) {
this.id = data.id
this.getObjFromId = function() {
//Return some value from somewhere using the this.id
}
this.obj = this.getObjFromId();
}
これを行う理由は、this.idプロパティを更新できるようにするためであり、this.objは常に更新されたIDを使用して他のオブジェクトを返します。現在、これが行うことは、最初に元のIDを使用してgetObjFromId関数を呼び出し、戻り値をthis.objに格納することです。私がこのようなことをした場合:
var testObj = new TestObj({id: 1});
alert(testObj.obj); //Returns Foo1
testObj.id = 5; //Update the object with a new id
alert(testObj.obj); //Returns Foo1, but should return Foo5
this.obj関数をthis.obj()のような関数として呼び出すことができれば、これは簡単ですが、さまざまな理由(テンプレートなど)でこれが不可能であるため、動的に取得できる必要があります。 this.objを使用するだけで、this.obj「関数」からの値。
これが理にかなっていることを願っています。私が書いているとき、私はその混乱を理解しているので、これを行うためのより良いアプローチがあるかもしれません。それでも、私が提案している機能は、オブジェクトプロパティから動的な値を呼び出すことができる場合と同じように機能する必要があります。私の質問のタイトルは、誰かが更新したいと思っている場合、私の問題をより説明するものとしてより適しているかもしれませんが、私は説明するためのより良い方法を考えることができませんでした。