我正在尝试根据调用者的 ScriptEngine 确定函数的结果:
//JScript
function doSomething()
{
if (ScriptEngine() === "VBScript")
return "this is VBScript";
else
return "this is JScript";
}
但结果是:
//JScript
var str = doSomething(); //"this is JScript"
//VBScript
Dim str : str = DoSomething() '"this is JScript"
该ScriptEngine()
函数始终返回其调用者的引擎名称,但我想知道doSomething()
调用者的引擎名称(不将其作为参数传递)。有没有办法在 ASP 中做到这一点?
这背后的动机是我编写了一个 JSON 实用程序类以在 ASP 站点中使用。JSON字符串的解析是通过(使用我在这个答案eval
中找到的验证)完成的。
的结果eval
是一个 JScript 对象(具有 JScript 数组和 JScript 日期作为属性)。然后用户必须指定一个标志来告诉函数他想要纯 JScript 对象还是想要一个 VBScript 对象(数组和日期转换为它们的 VBScript 等效项)。我想消除该参数。
//JScript
function parseJson(jsonString, isJsObject)
{
var parsedObject = parsingLogic(jsonString);
if (!isJsObject) //Would like to replace by engine check
convertVbProperties(parsedObject);
return parsedObject;
}