在函数上执行setTimeout的问题 - 将其作为参数传递

时间:2010-08-22 10:35:36

标签: javascript prototypejs settimeout

大家好我有一个接受this作为参数的函数 - 'this'指的是点击后应该运行函数的dom元素。问题是我希望在一个小延迟之后调用此函数,但是传递变量项this不起作用,因为执行函数时“this”然后不引用该对象在传入参数但传递给窗口对象。

我怎样才能完成这项工作?

2 个答案:

答案 0 :(得分:2)

您可以捕获this

var t = this;
window.setTimeout(function() {
    // use the t variable here
}, 2000);

答案 1 :(得分:2)

PrototypeJS将bind()方法添加到 Function.prototype 。此方法允许您将函数和参数绑定到特定对象的上下文。简单地说,

window.setTimeout((function() {
    alert(this);
}).bind(this), 2000);

最好的部分是,此方法现在是JavaScript所基于的ECMA-262规范的一部分,并且本机实现正在推广到现代浏览器中。 PrototypeJS只会添加此方法(如果尚未实现)。

我在http://jsfiddle.net/rLpbx/设置了一个示例脚本。