2012-05-15 41 views
1

心中已經被使用javascript干將在我的應用程序很長一段時間,一直以爲Javascript getters如何工作?

,他們這樣的工作:

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. 

我只是發現了計算每次做...

是否有資源或顯示他們如何實際工作?

+0

這只是一個函數,lifer任何其他。您*可以*緩存該值,例如通過執行返回函數的函數。 –

回答

1

如果定義在一個對象的屬性爲getter將每次叫你嘗試訪問該屬性。

obj.prop; 

如果你想緩存結果,你應該手動做。

相似的,如果你定義一個對象屬性的setter,它會在你每次設置屬性時被調用。

obj.prop = 1;