大家好我有一个接受this
作为参数的函数 - 'this
'指的是点击后应该运行函数的dom元素。问题是我希望在一个小延迟之后调用此函数,但是传递变量项this
不起作用,因为执行函数时“this
”然后不引用该对象在传入参数但传递给窗口对象。
我怎样才能完成这项工作?
答案 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/设置了一个示例脚本。