成人午夜激情影院,小视频免费在线观看,国产精品夜夜嗨,欧美日韩精品一区二区在线播放

當前位置:首頁>>軟件教程>>新聞內(nèi)容  
VBScript和JScript互相調(diào)用方法
作者:未知 發(fā)布時間:2003-11-6 16:14:02 | 【字體:
   ASP具備管理不同語言腳本程序的能力,能夠自動調(diào)用合適的腳本引擎以解釋腳本代碼和執(zhí)行內(nèi)置函數(shù)。ASP開發(fā)環(huán)境提供了兩種腳本引擎,即VBScript(缺省)和JScript。不過,開發(fā)者并沒有被限制于只能使用這兩種語言,只要能夠提供合適的ActiveX腳本引擎就能使用任何腳本語言。

  腳本語言的選擇往往基于許多不同原因:它可能是開發(fā)者最為熟悉的語言,可能是對給定工程來說能夠提供最多特色支持的,也有可能是最具效率的。不同的環(huán)境和要求使得我們在選擇腳本語言時注重不同的因素,同時也使得我們在某些時候面臨選定的腳本語言不能直接提供其它語言固有的函數(shù)這一問題,或某個腳本已經(jīng)寫成但用的卻是另外一種腳本語言。

  此時應該怎么辦?是否需要用當前所用的腳本語言重寫這些腳本?或者說,是否有可能在一種腳本語言中調(diào)用其它腳本語言的內(nèi)置函數(shù)?本文要說明的就是在ASP應用中如何讓VBScript腳本和JScript腳本交互以最大限度地獲得兩種腳本語言的特色支持。

  一、VBScript和JScript的內(nèi)置函數(shù)

  在VBScript和JScript中,有大量的內(nèi)置函數(shù)功能是相同或類似的。然而,在一種腳本語言中內(nèi)置的函數(shù)并非總是在另外一種腳本語言中也有對應的函數(shù)。例如,VBScript提供了許多用于操作字符串和格式化數(shù)據(jù)的函數(shù),這些函數(shù)在JScript中并不存在。這些函數(shù)包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理數(shù)組、字符串編碼等的函數(shù)在VBScript中也沒有定義,如join()、reverse()、pow()、位操作、escape()和unescape()等。

  那么,如果在JScript程序中需要一個VBscript函數(shù)該怎么辦呢?

  二、異種腳本的互相調(diào)用

  如果需要在JScript腳本中調(diào)用一個VBScript中內(nèi)置的函數(shù),則應該寫一個VBScript用戶定義函數(shù)(在這里調(diào)用VBScript內(nèi)置函數(shù)),然后在JScript腳本中象調(diào)用公用JScript函數(shù)一樣調(diào)用這個用戶定義函數(shù)。

  例如,如果要調(diào)用的VBSCript內(nèi)置函數(shù)是FormatCurrency(),則可以聲明如下自定義函數(shù):

  <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
  Function FormatValue(Value)
    FormatValue = FormatCurrency(Value)
  End Function
  </SCRIPT>

  接下來在JScript代碼中就可以象普通JScript函數(shù)一樣調(diào)用FormatValue()了。用類似的方法也可以實現(xiàn)VBScript代碼調(diào)用JScript函數(shù)。

  應用同樣的規(guī)則,我們可以在任何腳本內(nèi)調(diào)用任何用戶定義函數(shù)。不過,從JScript腳本內(nèi)調(diào)用一個不帶參數(shù)的VBScript過程(Sub)時應略加注意,此時在JScript中應該象調(diào)用一個不帶參數(shù)的JScript函數(shù)一樣調(diào)用它,如用foo()調(diào)用VBScript Sub foo過程。

  三、數(shù)據(jù)共享

  在某些情形下混合運用VBScript和JScript函數(shù)是非常有用的,但在不同語言腳本之間共享數(shù)據(jù)也可能很有用。實現(xiàn)這種共享的方法很簡單:不管使用的是什么語言,只要是在頁面級聲明的變量就可以任意引用。

  對象的使用方法也相似,可以任意選用合適的語言讀取、修改屬性或調(diào)用對象的方法。當然給定對象的屬性和方法是由創(chuàng)建該對象實例的語言所定義的。正如上例VBScript的過程調(diào)用,當從JScript中調(diào)用一個不帶參數(shù)的VBScript對象的方法時,其調(diào)用方法也遵從JScript的調(diào)用規(guī)則,反之亦然。

  四、數(shù)組管理

  數(shù)組共享問題稍微復雜一點。雖然數(shù)組也象其它變量一樣可以在不同語言腳本之間共享,但必須注意兼容方面的問題。

  VBScript數(shù)組在JScript下可以用VBScript的符號引用,即用myArray(2)引用數(shù)組元素而不是JScript的數(shù)組元素引用符號myArray[2]。此外,還可以使用一個特殊的JScript對象——VBArray對象將VBScript數(shù)組轉(zhuǎn)換為JScript數(shù)組。下面的代碼從VBScript數(shù)組myVBArray創(chuàng)建JScript數(shù)組myJSArray:

 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()

  上述代碼首先創(chuàng)建一個臨時的VBArray對象,然后使用它的toArray()方法將自己轉(zhuǎn)換為JScript數(shù)組。此后就可以象普通JScript數(shù)組一樣使用myJSArray,如myJSArray[1]。但應當注意的是,toArray()方法將把一個多維的VBArray轉(zhuǎn)換為一維的JScript數(shù)組。

  從VBScript中引用JScript數(shù)組更為復雜。雖然在VBScript中我們可以直接訪問JScript數(shù)組相關(guān)的方法和屬性,但沒有直接訪問JScript數(shù)組的單個元素的方法。也就是說,我們可以在VBScript腳本中讀取JScript數(shù)組的長度屬性,如下所示:

  x = myJSArray.length

  但無法直接讀取該數(shù)組的單個元素,下面的VBScript代碼是不正確的:

  x = myJSArray(3)

  解決該問題的一個可行的方法是執(zhí)行一個轉(zhuǎn)換過程,如下面的代碼所示,此處假定VBScript是缺省的腳本語言:

<%
  Dim Temp
  Dim myVBArray
  Temp = myJSArray.join(", ")
  myVBArray = Split(Temp, ", ")
%>

  此處的JScript join()方法將數(shù)組myJSArray元素轉(zhuǎn)換到一個以逗號為分割符的字符串,VBScript Split()函數(shù)將字符串轉(zhuǎn)換為VBScript數(shù)組。注意這里我們是在VBScript環(huán)境下調(diào)用JScript的join方法。依照此例,我們可以通過自定義VBScript函數(shù)來模擬JScript的VBArray對象的toArray()方法以實現(xiàn)JScript數(shù)組到VBScript數(shù)組的轉(zhuǎn)換。

  五、小結(jié)

  在同一個ASP工程內(nèi)靈活選用不同腳本語言具有許多優(yōu)點,這些腳本之間的交互能力更為開發(fā)者集成不同語言所提供的內(nèi)置函數(shù)和其它功能帶來了更多的機會,同時也使得實現(xiàn)既可用于VBScript也可用于JScript環(huán)境的通用腳本庫成為可能。
文章來源:weste.net
 放生
 愚愛
 夠愛
 觸電
 白狐
 葬愛
 光榮
 畫心
 火花
 稻香
 小酒窩
 下雨天
 右手邊
 安靜了
 魔杰座
 你不像她
 邊做邊愛
 擦肩而過
 我的答鈴
 懷念過去
 等一分鐘
 放手去愛
 冰河時代
 你的承諾
 自由飛翔
 原諒我一次
 吻的太逼真
 左眼皮跳跳
 做你的愛人
 一定要愛你
 飛向別人的床
 愛上別人的人
 感動天感動地
 心在跳情在燒
 玫瑰花的葬禮
 有沒有人告訴你
 即使知道要見面
 愛上你是一個錯
 最后一次的溫柔
 愛上你是我的錯
 怎么會狠心傷害我
 不是因為寂寞才想
 親愛的那不是愛情
 難道愛一個人有錯
 寂寞的時候說愛我
主站蜘蛛池模板: 茶陵县| 浪卡子县| 涡阳县| 汉中市| 交口县| 昆明市| 自治县| 二连浩特市| 云浮市| 金昌市| 酒泉市| 酉阳| 鸡东县| 高州市| 庆元县| 庆城县| 得荣县| 浏阳市| 城口县| 乌兰浩特市| 托里县| 得荣县| 辽阳市| 东平县| 泌阳县| 宁城县| 万安县| 吴旗县| 措勤县| 沙湾县| 香港| 于都县| 内乡县| 肥西县| 竹北市| 合山市| 贵德县| 乾安县| 即墨市| 三门县| 揭东县|