【发布时间】:2018-02-26 21:21:11
【问题描述】:
例如,我有一个对象,其中键的值尚未知道/计算,但是当我第一次调用该键时,它会计算值并用计算值替换计算/函数。关键是该值仅在需要时才计算出来,然后可以再次重复使用,而无需再次计算出来......
这就是我目前所拥有的......
function newobj() {
this.test=function(){
this.test=[1,2,3,4]//complex function in real world use
return this.test
}
}
a = new newobj()
a.test() //[1,2,3,4]
a.test() //not a function!
a.test //[1,2,3,4]
如您所见,这需要括号来调用,而不是第二次调用,所以这需要知道它是否已经被调用 - 不理想
第 2 版
function newobj() {
this.test=function(){
var a=[1,2,3,4]
this.test=function(){return a}
return a
}
}
a = new newobj()
a.test() //[1,2,3,4]
a.test() //[1,2,3,4]
这似乎不是解决这个问题的正确方法..但也许是?
抱歉,如果这是一个愚蠢的问题,并提前感谢您的帮助
【问题讨论】:
-
听起来你正在寻找记忆。最好将
test保留为一个函数,但如果该值已被计算,则只需提前退出。然后从函数的外部看,差异是不透明的。 -
为什么不在
test函数中检查属性是否为undefined,如果是则创建并返回,否则直接返回。并且在使用对象时,始终调用该函数。编辑:正如大卫所说 -
@KarlReid 仍然需要使用函数调用语法
标签: javascript variables object