0
我試圖確定一個函數的結果取決於主叫方的ScriptEngine:檢測功能的主叫方的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
完成(使用我在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;
}
如果很清楚爲什麼這很重要,您可能會得到更好的幫助。爲什麼調用函數的代碼在問題的上下文中寫入哪種語言? – AnonJr
@AnonJr,我已經增加了這個問題的動機。 'isJsObject'參數並不是什麼大問題,但是它可以很好地擺脫它。 – Raphael
這很有道理。我還沒有答案,但這會幫助其他人。 – AnonJr