虽然我的标题看起来有点不靠谱,但我试图准确地描述我正在尝试做的事情。假设我有一个对象:
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“函数”中获取值。
我希望这是有道理的。在我写作时,我理解它令人困惑,所以也许有更好的方法来做到这一点。尽管如此,我提出的功能需要在我可以从对象属性调用动态值的情况下工作。如果有人愿意更新,我的问题标题可能更适合描述我的问题,但我想不出更好的描述方式。