从调用函数对象中获取`this`

时间:2015-04-29 13:19:53

标签: javascript node.js this

我有some code我目前正在这样调用。

screenshot.snap(this, $('.navbar-inner .container'));

在上面的代码中,传入的this对象来自mocha.js。它包含当前测试名称,其所在文件等信息。我使用该信息来命名屏幕截图。

我想删除在任何地方传递this引用的必要性,但无论我如何尝试在snap函数内部达到它,我都无法找到我的信息需要。

var testContext = exports.snap.caller; //.prototype? .this?

我已经检查了exports.snap.caller.toString(),它是在mocha测试套件中调用的函数。我是通过调试repl完成的,并且在进一步检查时看到我可以得到的唯一信息是the properties of a function instance,它不包含来自调用函数this的任何内容。

有没有办法做到这一点,或者每次调用我的this函数时,我是否卡在screenshot.snap参数中?

2 个答案:

答案 0 :(得分:0)

您可以在before块中执行某些操作,例如:

var snap;
before(function () {
    browser.get('https://angularjs.org');
    snap = screenshot.snap.bind(this);
});

然后将screenshot.snap(this, $('.navbar-inner .container'));替换为snap($('.navbar-inner .container');

根据mocha处理this指针的方式,您可能需要在beforeEach循环中执行此操作。

答案 1 :(得分:0)

不,其他范围的this值无法通过编程方式访问。

您需要将值显式传递给snap函数,或者使其在snap函数访问的全局范围内可用。