ASP具備管理不同語言腳本程序的能力 能夠自動調用合適的腳本引擎以解釋腳本代碼和執行內置函數 ASP開發環境提供了兩種腳本引擎 即VBScript(缺省)和JScript 不過 開發者並沒有被限制於只能使用這兩種語言 只要能夠提供合適的ActiveX腳本引擎就能使用任何腳本語言
腳本語言的選擇往往基於許多不同原因 它可能是開發者最為熟悉的語言 可能是對給定工程來說能夠提供最多特色支持的 也有可能是最具效率的 不同的環境和要求使得我們在選擇腳本語言時註重不同的因素 同時也使得我們在某些時候面臨選定的腳本語言不能直接提供其它語言固有的函數這壹問題 或某個腳本已經寫成但用的卻是另外壹種腳本語言
此時應該怎麽辦?是否需要用當前所用的腳本語言重寫這些腳本?或者說 是否有可能在壹種腳本語言中調用其它腳本語言的內置函數?本文要說明的就是在ASP應用中如何讓VBScript腳本和JScript腳本交互以最大限度地獲得兩種腳本語言的特色支持
壹 VBScript和JScript的內置函數
在VBScript和JScript中 有大量的內置函數功能是相同或類似的 然而 在壹種腳本語言中內置的函數並非總是在另外壹種腳本語言中也有對應的函數 例如 VBScript提供了許多用於操作字符串和格式化數據的函數 這些函數在JScript中並不存在 這些函數包括StrReverse() Filter()以及FormatCurrency()等 在另壹方面 JScript所提供的用於管理數組 字符串編碼等的函數在VBScript中也沒有定義 如join() reverse() pow() 位操作 escape()和unescape()等
那麽 如果在JScript程序中需要壹個VBscript函數該怎麽辦呢?
二 異種腳本的互相調用
如果需要在JScript腳本中調用壹個VBScript中內置的函數 則應該寫壹個VBScript用戶定義函數(在這裏調用VBScript內置函數) 然後在JScript腳本中象調用公用JScript函數壹樣調用這個用戶定義函數
? 例如 如果要調用的VBSCript內置函數是FormatCurrency() 則可以聲明如下自定義函數
< SCRIPT LANGUAGE= VBSCRIPT RUNAT= SERVER > Function FormatValue(Value) FormatValue = FormatCurrency(Value) End Function < /SCRIPT>接下來在JScript代碼中就可以象普通JScript函數壹樣調用FormatValue()了 用類似的方法也可以實現VBScript代碼調用JScript函數
應用同樣的規則 我們可以在任何腳本內調用任何用戶定義函數 不過 從JScript腳本內調用壹個不帶參數的VBScript過程(Sub)時應略加註意 此時在JScript中應該象調用壹個不帶參數的JScript函數壹樣調用它 如用foo()調用VBScript Sub foo過程
三 數據***享
在某些情形下混合運用VBScript和JScript函數是非常有用的 但在不同語言腳本之間***享數據也可能很有用 實現這種***享的方法很簡單 不管使用的是什麽語言 只要是在頁面級聲明的變量就可以任意引用
對象的使用方法也相似 可以任意選用合適的語言讀取 修改屬性或調用對象的方法 當然給定對象的屬性和方法是由創建該對象實例的語言所定義的 正如上例VBScript的過程調用 當從JScript中調用壹個不帶參數的VBScript對象的方法時 其調用方法也遵從JScript的調用規則 反之亦然
lishixinzhi/Article/program/net/201311/14679