从eval中获取函数列表
Get list of functions from eval
背景
我有一个在WSH
下运行的JScript
脚本。
在我的代码中,我使用eval()
函数。传递给eval()
的字符串本质上是要执行的另一段代码。我期望这个代码定义一个特定名称的函数。比如func()
问题
我如何知道预期定义的函数是否确实存在,并且在eval()
调用后可以调用。
努力1-失败
function isFuncCallable() {
for (var m in this)
if (typeof this[m] == "function" && this[m] == 'func')
return true;
return false;
}
eval("function func() { WScript.Echo('"func was called'") }");
if (isFuncCallable())
func();
else
WScript.Echo("func is not callable");
isFuncCallable
不能像我预期的那样工作。它返回false,但如果我调用func()
,它将是一个有效的调用。
更新1
如建议
这适用于
function isFuncCallable() {
for (var m in this)
if (typeof this[m] == "function" && m == 'func')
return true;
return false;
}
eval("function func() { WScript.Echo('"func was called'") }");
if (isFuncCallable())
func();
else
WScript.Echo("func is not callable");
}
而这不是:
function Main() {
function isFuncCallable() {
for (var m in this)
if (typeof this[m] == "function" && m == 'func')
return true;
return false;
}
eval("function func() { WScript.Echo('"func was called'") }");
if (isFuncCallable())
func();
else
WScript.Echo("func is not callable");
}
Main();
您不需要使用this[m]
。
if (typeof this[m] == "function" && this[m] == 'func')
应该是
if (typeof this[m] == "function" && m == 'func')
相反,因为for (x in y)
迭代y的每个元素,所以您正在考虑使用for (x = 0; x < y.length; x++)
风格的语法。
我知道这个问题很老,但这里有一个解决方案供参考:
// b.js
// use IIFE to return an object with all exported functions and data
(function() {
return {
sum: function(a, b) { return a + b; }
};
})();
现在在另一个文件中
var fso = new ActiveXObject("Scripting.FileSystemObject");
var b = eval(fso.OpenTextFile('b.js',1).ReadAll());
WScript.Echo(b.sum(3, 4));
for(var p in b)
{
WScript.Echo(p);
}
// the output should be
// 7
// sum
相关文章:
- Javascript通过列表项的函数和css来更改背景颜色
- 正在执行函数列表jquery
- 在数组上执行函数列表
- Javascript 动态创建一个函数列表
- Javascript:给定函数列表,如何创建一个将这些函数作为属性的对象
- CouchDB:Erlang 函数列表
- 用函数列表敲除foreach
- 可能调用的自定义函数列表
- 如何使用jEdit获取JavaScript文件的函数列表's Mac上的Sidekick
- node.js:将一个异步函数列表应用于列表列表中的每一项
- 通过函数名称执行函数列表
- 如何正确地按顺序调用异步函数列表
- 从eval中获取函数列表
- 是否有ide给出php内部的js函数列表
- JavaScript:连续调用对象上的函数列表
- jQuery(窗口)的可用函数列表
- 在java中使用scriptenengine,我如何提取函数列表
- 原型中的函数列表
- JavaScript中位运算符的克隆函数列表
- 使用RHINO API在Java中提取js文件中的函数列表