我有一些功能,只有返回值,如果在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