尽管我的标题看起来有点不整齐,但我试图准确描述我正在尝试做什么。说我有一个对象:从对象属性中调用函数而不使用括号
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财产和使用更新的ID this.obj总是会返回一些其他对象。现在它所做的是最初使用原始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“函数”中获得动态值。
我希望这是有道理的。在我写作时,我明白它的困惑,所以也许有更好的方法来做到这一点。无论如何,我提议的功能需要在可以从对象属性调用动态值的地方进行工作。如果有人关心更新,我的问题标题可能更适合描述我的问题,但我想不出更好的描述方法。
哪些浏览器在这个工作呢? – jfriend00
IE 9+,FF 4+,Chrome 5+,Safari 5.1+,Opera 11.6+ –
['get'关键字](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/get)和['__defineGetter__'弃用方法](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/defineGetter)在旧版本中受支持 - 当然,您可以'不要期望它能在IE中工作: -/ – Bergi