0

我正在尝试根据调用者的 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;
}
4

1 回答 1

0

我最终保留了isJsObject参数。由于我们大部分时间都在使用 VBScript,而 JScript 仅用于构建库,所以效果很好。

于 2014-06-27T14:26:46.993 回答