嗨,大家好我有一个函数,它接受this
作为参数 - 'this
'引用的dom元素,点击后应该运行一个函数。问题是我希望这个函数在稍微延迟后被调用,但是通过可变项this
不起作用,因为函数执行时'this
'不会引用参数中传入的对象,而是传递给窗口对象。在函数上执行setTimeout的问题 - 将此函数作为参数传递
我该如何做到这一点?
嗨,大家好我有一个函数,它接受this
作为参数 - 'this
'引用的dom元素,点击后应该运行一个函数。问题是我希望这个函数在稍微延迟后被调用,但是通过可变项this
不起作用,因为函数执行时'this
'不会引用参数中传入的对象,而是传递给窗口对象。在函数上执行setTimeout的问题 - 将此函数作为参数传递
我该如何做到这一点?
你可以捕捉this
:
var t = this;
window.setTimeout(function() {
// use the t variable here
}, 2000);
PrototypeJS增加了bind()方法Function.prototype的。此方法允许您将函数和参数绑定到特定对象的上下文。简单地说,
window.setTimeout((function() {
alert(this);
}).bind(this), 2000);
最好的部分是,这种方法是目前ECMA-262规范,JavaScript是基于的一部分,本地实现正推出到现代浏览器。如果PrototypeJS尚未实现,它将只添加此方法。
我已经在http://jsfiddle.net/rLpbx/上设置了一个示例脚本。
我在这里得到一个错误在萤火虫 - 我的功能正在执行忽略超时和萤火虫陈述它的一个无用的settimeoutcall坚持我把代码报价:( – Ali 2010-08-22 11:22:24
@Ali:这似乎是一个奇怪的错误。你的问题与你有的代码,我会看看它,看看有什么问题。 – 2010-08-22 12:15:56