Javascript 对函数执行setTimeout时出现问题-将其作为参数传递

Javascript 对函数执行setTimeout时出现问题-将其作为参数传递,javascript,prototypejs,settimeout,Javascript,Prototypejs,Settimeout,大家好,我有一个函数,它接受this作为参数-“this”指的是dom元素,单击该元素应该运行一个函数。问题是,我希望在一个小延迟后调用此函数,但是传递变量项this与执行函数时不一样,this,然后不引用参数中传递的对象,而是指向窗口对象 我如何才能做到这一点?您可以捕获此: var t = this; window.setTimeout(function() { // use the t variable here }, 2000); PrototypeJS将该方法添加到Funct

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


我如何才能做到这一点?

您可以捕获

var t = this;
window.setTimeout(function() {
    // use the t variable here
}, 2000);
PrototypeJS将该方法添加到Function.prototype。此方法允许您将函数和参数绑定到特定对象的上下文。简单地说

window.setTimeout((function() {
    alert(this);
}).bind(this), 2000);
最好的部分是,该方法现在是ECMA-262规范的一部分,JavaScript基于ECMA-262规范,并且本机实现正在推出到现代浏览器中。PrototypeJS只会在尚未实现的情况下添加此方法


我在上设置了一个示例脚本。

我在firebug中遇到一个错误-我的函数正在忽略超时执行,firebug声明它是一个无用的settimeoutcall,我坚持在代码周围加引号:(@Ali:这似乎是个奇怪的错误,你应该用你的代码更新你的问题,我来看看问题出在哪里。