2011-01-27 36 views
1

我想定期更新一個js對象(當創建對象的初始化之後),並嘗試以下操作:JavaScript對象模式的定期更新對象

​​

這並不目前在此刻工作,this似乎並沒有指向數據對象。我可以在這裏嘗試幾種不同的排列方式 - 但是想知道我是否在這裏咆哮錯誤的樹?對於需要定期更新(稱爲外部)的對象,我應該使用什麼樣的模式。

回答

2

你是八九不離十,溝渠中那些結尾()

var data = { 
    foo: -1, 
    bar: -1, 
    refresh: function() { 
     this.foo = getFoo(); 
     this.bar = getBar(); 
    } // <== here 
}; // <== Also, semicolon here for best practice 

用法:

data.refresh(); 

您需要提供getFoogetBar功能,或接受參數到refresh,例如:

var data = { 
    foo: -1, 
    bar: -1, 
    refresh: function(newFoo, newBar) { 
     this.foo = newFoo; 
     this.bar = newBar; 
    } 
}; 

用法:

data.refresh(42, 52); 
+0

很好,謝謝 - 而這會不會普遍推薦的方法?使用obj作爲查詢字符串變量的商店.. – malangi 2011-01-27 13:42:12

1

this將無論如何調用你的功能。在你的情況下,你會立即自動調用它,因此它將被window對象調用。

你可以做的是:

var data = { 
    foo: -1, 
    bar: -1, 
    refresh: function() { 
     this.foo = getFoo(); 
     this.bar = getBar(); 
    } 
} 
data.refresh();