从内部函数获取调用者实例

时间:2014-04-29 17:13:53

标签: javascript node.js

我目前有一些大文件,我想分成较小的文件来简化编辑。我觉得好像这些代码片段'如果这样做,就不值得被创建和/或与范围发生冲突。

因此,我只需要从这些剪辑的内容中导入内容即可。文件,进入当前执行范围,然后评估它们。我想编写一个辅助函数来执行此操作(通过' main' js文件在全局范围内设置。)但我遇到了障碍。

有没有办法从被调用的函数中获取调用实例。

到目前为止我所拥有的:

global.acquire = (function() {
    var cache = {};
    var fileReader = require('fs');
    return function (file, updateCache) {
        var f = require.resolve(file);
        if (f) {
            if (cache.hasOwnProperty(f) && !updateCache) {
                res = cache[f];
            } else {
                res = fileReader.readFileSync(f, {encoding: "utf8"});
            }
            cache[f] = res;

            // Is there a way to get the calling function's instance so the eval will execute from the caller's scope? 
            return eval.apply(caller, '(' + res + ')');
        } else {
            throw "File not found";
        }
    }
}());

我知道我可以传递实例,也可以获取.apply(),但如果我可以从函数中检索实例,那会感觉有点草率。

1 个答案:

答案 0 :(得分:0)

无法传递特定变量或使用this设置您想要/需要访问的数据,无法从该范围外部的单独函数中获取调用者的作用域。