1

我有一组包含在其中的函数:

var main = {
    func1: function() {
        ...
    },
    func2: function() {
        ...
    }
}

在代码之后,我有这一行:

$('a.specialLink').click(main.func2);

在函数 中,func2通过 对对象进行引用this,但是当从 onclick 事件this调用它时,上下文将更改为调用它的元素,而不是函数所在的对象。有没有办法将this上下文返回到主对象?我知道我可以用 替换它main.,但是如果我需要对实例化的对象做类似的事情,那是行不通的。

到目前为止,我唯一能想到的是将设置行替换为:

$('a.specialLink').click(function() { main.func2(main) });

wherefunc2有一个用作this(设置为this如果未定义)的参数,但这对我来说感觉有点乱。

4

1 回答 1

3

到目前为止,我唯一能想到的是将设置行替换为:

$('a.specialLink').click(function() { main.func2(main) });

这基本上就是这样做的方法。但是,您可以省略main作为参数,因为当您像这样调用函数时,它已经成为this上下文

$('a.specialLink').click(function() { main.func2() });

bind但是,您也可以使用 ES5.1方法,而不是写出该函数表达式:

$('a.specialLink').click(main.func2.bind(main));

这甚至会隐式传递所有参数,例如本例中的事件对象。

于 2013-05-20T12:10:02.400 回答