Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getter是如何工作的?_Javascript_Oop - Fatal编程技术网

Javascript getter是如何工作的?

Javascript getter是如何工作的?,javascript,oop,Javascript,Oop,我已经在我的应用程序中使用javascript getter很长一段时间了,并且一直认为 他们是这样工作的: myobject.prototype.__defineGetter__('something', function () { return DoSomeHeavyComputation() // this will be executed only once and will be saved }) new myobject() myobject.something // the

我已经在我的应用程序中使用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.
我刚发现每次都要计算


是否有一个资源或东西可以展示它们是如何实际工作的?

这篇文章非常棒,并且深入了解了原型设计和对象实例化的本质:

如果您在对象的属性上定义了一个getter,那么每次尝试访问该属性时都会调用它

obj.prop;
如果要缓存结果,应手动执行

类似地,如果在对象的属性上定义setter,则每次设置属性时都会调用该setter

obj.prop = 1;

我想你正在寻找类似于备忘录的东西


这只是一个函数,而不是其他函数。您可以缓存该值,例如通过执行返回函数的函数。