我目前有一些大文件,我想分成较小的文件来简化编辑。我觉得好像这些代码片段'如果这样做,就不值得被创建和/或与范围发生冲突。
因此,我只需要从这些剪辑的内容中导入内容即可。文件,进入当前执行范围,然后评估它们。我想编写一个辅助函数来执行此操作(通过' 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(),但如果我可以从函数中检索实例,那会感觉有点草率。
答案 0 :(得分:0)
无法传递特定变量或使用this
设置您想要/需要访问的数据,无法从该范围外部的单独函数中获取调用者的作用域。