我有一些功能,只有返回值,如果在DOM一些潛在的「東西」有變化,像這樣:如果計算機VAR x
處理不當改變持久性的JavaScript函數對象中
function getFoo() {
if (typeof this.prev === "undefined") {
this.prev = null;
}
// calculate x
if (x != this.prev) {
this.prev = x;
return this.prev;
} else {
return;
}
}
foo
返回None 。這在從控制檯調用時似乎工作正常。
接着,我在對象包裹此,我就可以順序地調用類似的功能:
function bar() {
this.plugins = {
foo: getFoo
};
for (var attr in this.plugins) {
if (this.plugins.hasOwnProperty(attr)) {
console.log(this.plugins[attr]());
}
}
奇怪的是,當我現在請bar()
,底層功能(如getFoo
)總是返回值 - - 即使dom中的潛在東西沒有改變。看起來功能在使用時被破壞(在plugin
對象中) - 我如何堅持這些?
你可以舉一個例子,你叫什麼時候/你怎麼叫bar()? – Matt 2011-05-05 15:11:33
僅供參考,函數*總是*返回一個值;只是'return'將返回'undefined'。 – 2011-05-05 15:12:03
你的描述是非常缺乏的,沒有顯示更多的代碼和更多的上下文,幾乎不可能知道'this'在所有這些函數中具有什麼上下文。我敢打賭,我的最低收益是這是一個「範圍問題」。嘗試將這些函數的調用改爲'.call(this)' – davin 2011-05-05 15:18:23