我正在尝试根据调用者的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中有没有办法做到这一点?
这背后的动机是我写了一个在ASP站点中使用的JSON实用程序类。解析JSON字符串是通过eval
完成的(使用我在this回答中找到的验证)。
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;
}
答案 0 :(得分:0)
我最终保留了isJsObject
参数。由于我们大部分时间都在使用VBScript,而JScript只用于构建库,因此工作正常。