让对象在JavaScript中“调用”函数

时间:2010-08-28 12:53:33

标签: javascript jquery

我不确定标题,但我希望你能帮助我。

我想使用与jQuery用于其事件处理程序相同的模式,例如click / hover / blur等,在事件处理程序中使用this来获取对象。

我如何做到这一点?

// The event handler
var handler = function() {
     alert(this); // how do I set "this" in the trigger?
}

// The function that triggers the event handler
var trigger = function(handler) {
     var o = someObject;
     if($.isFunction(handler)) handler(); // how do I set "o" as the this-reference in handler?
}

1 个答案:

答案 0 :(得分:2)

您在Function原型上使用“call”或“apply”函数:

 handler.call(thingThatShouldBeThis, arg, arg, arg);

 handler.apply(thingThatShouldBeThis, [arg, arg, arg]);

Call接受一个像常规函数一样的参数列表,而apply需要将参数放在一个数组中。

某些浏览器的旧版本没有“适用”,但我不知道现在是否值得担心。