1

我在我的应用程序中使用 javascript getter 很长时间了,并且一直认为

他们像这样工作:

myobject.prototype.__defineGetter__('something', function () {
   return DoSomeHeavyComputation() // this will be executed only once and will be saved
})

new myobject()
myobject.something // the computation will be done here
myobject.something // no computation will be done here.

我刚刚发现每次都完成了计算...

是否有资源或其他东西可以显示它们实际上是如何工作的?

4

3 回答 3

1

如果您在对象的属性上定义 getter,则每次尝试访问该属性时都会调用它。

obj.prop;

如果要缓存结果,则应手动进行。

同样,如果您在对象的属性上定义 setter,每次设置属性时都会调用它。

obj.prop = 1;
于 2012-05-15T23:58:11.563 回答
0

这篇文章很棒,真正深入到原型设计和对象实例化的本质:http: //dmitrysoshnikov.com/ecmascript/chapter-7-2-oop-ecmascript-implementation/

于 2012-05-15T23:48:39.983 回答
0

我认为您正在寻找类似记忆的东西。

http://documentcloud.github.com/underscore/#memoize

于 2012-05-16T23:37:48.183 回答