我用这样的代码在全局上下文中调用了 eval() 函数:
eval( (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile("/BaseScripts/sft.js", 1).ReadAll(), );
之后,“sft.js”脚本文件中的所有局部变量、函数、对象都将添加到我的全局上下文中。但是,如果在本地函数中执行相同的 eval 调用:
function run_eval(path) {
eval( (new ActiveXObject("Scripting.FileSystemObject")).OpenTextFile(path, 1).ReadAll(), );
}
run_eval("/BaseScripts/sft.js");
“sft.js”脚本文件中的局部变量、函数、对象将不会添加到我的全局上下文中。为什么 ?根据文档,这两个调用都是针对全局对象建立的。为什么只有第一次调用将“sft.js”脚本文件中的变量添加到全局对象?不要保存情况,并run_eval()
在全局上下文中显式调用:
run_eval.call(this, "/BaseScripts/sft.js");
//or
run_eval.call(RuntimeObject(), "/BaseScripts/sft.js");
两个调用都等于 equ by result to run_eval("/BaseScripts/sft.js");
。欢迎任何意见?