Javascript 获取函数的上下文?

Javascript 获取函数的上下文?,javascript,function,jasmine,Javascript,Function,Jasmine,我正在使用Jasmine进行单元测试,我正在监视一个函数: it('should loop through all inputs', function() { var test = function() {}; spyOn(this, 'test').andCallThrough(); formManager.eachInputs($unfoldedView, test); expect(test).toHaveBeenCalled() }); 我的问题是spy

我正在使用Jasmine进行单元测试,我正在监视一个函数:

it('should loop through all inputs', function() {
    var test = function() {};
    spyOn(this, 'test').andCallThrough();
    formManager.eachInputs($unfoldedView, test);
    expect(test).toHaveBeenCalled()
});

我的问题是spyOn有两个参数:(上下文,函数)。测试函数的上下文是什么?如何获取它?它的上下文是这个匿名函数的内部,但我不知道如何获得它。(我将其作为上下文参数编写,但并非如此)

当您在全局范围内时,您声明的变量作为全局对象上的成员存在(无论是
window
还是
global
)。在局部函数作用域中声明变量时,没有类似的“局部”对象。(有关详细信息,请参阅堆栈溢出问题“”

相反,您可以将函数设置为对象的方法,并将该对象用作上下文:

it('should loop through all inputs', function() {
    var obj = { test: function() {} };
    spyOn(obj, 'test').andCallThrough();
    formManager.eachInputs($unfoldedView, obj.test);
    expect(obj.test).toHaveBeenCalled()
});