我正在开展一个教授 JavaScript 技术的项目(例如 Code Academy)。我这样做主要是为了自学。
我对一个重要部分有困难:由于整个项目是一个网络项目,用户直接在网站中输入他的代码。我的问题是,如何检查提交的代码是否通过了当前练习的所有测试?我的方法是评估代码并针对它运行我的单元测试。这里的问题是,我如何限制评估代码的范围以及如何测试它?我已经在这里找到了关于如何限制范围的解决方案:
function maskedEval(scr)
{
// set up an object to serve as the context for the code
// being evaluated.
var mask = {};
// mask global properties
for (p in this)
mask[p] = undefined;
// execute script in private context
(new Function( "with(this) { " + scr + "}")).call(mask);
}
但是我没有解决方案如何针对评估的代码运行我的测试。这是正确的方法还是我应该完全不同?