;;;ASP;不具管理并不相同语言脚本程序的能力,需要自动调用适宜的脚本引擎以解读脚本代码和继续执行内置
函数。ASP共同开发环境提供者了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并不会被上限
于勉强可用这两种语言,只要都能给予适合的ActiveX脚本引擎就能用到任何脚本语言。;
;脚本语言的同样往往基于许多有所不同原因:它确实是开发者最为有意思的语言,意味著是对等价工程来说
必须共享最多特色全力支持的,也有可能是最极具效率的。有所不同的环境和尽快使得我们在自由选择脚本语言时讲究
各不相同的因素,同时也使得我们在某些时候遭遇定为的脚本语言不用单独获取其它语言固有的函数这一问
题,或某个脚本已经所作但用的却是另外一种脚本语言。;
;此时应当怎么办?前提并不需要用当前所用的脚本语言解释器这些脚本?或者说,前提有可能在一种脚本
语言中调用其它脚本语言的内置函数?本文要明确指出的就是在ASP运用中如何让VBScript脚本和JScript脚
本交互以最大限度地获取两种脚本语言的特色拥护。;
;;一、VBScript和JScript的内置函数;
;在VBScript和JScript;中,有大量的内置函数功能是相同或多种不同的。然而,在一种脚本语言中内置
的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript发放了许多用以配置字符串和
格式化数据的函数,这些函数在JScript中并不发挥作用。这些函数以外StrReverse()、Filter()以及Forma
tCurrency()等。在另一方面,JScript所包括的可用管理数组、字符串编码等的函数在VBScript中也不了
有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。;
;那么,如果在JScript程序中无需一个VBscript函数该怎么办呢?;
;二、异种脚本的互相调用;
;如果只能在JScript脚本中调用一个VBScript中内置的函数,则某种程度读到一个VBScript用户定义函数
(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户合于
义函数。;
例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:;
接下来在JScript代码中就可以象普通JScript;函数一样调用FormatValue()了。用相近的方法也可
以充分利用VBScript代码调用JScript函数。;
;系统设计同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript;脚本内调用一
个不只见参数的VBScript过程(Sub)时应Pardosa同样,此时在JScript中无论如何象调用一个不隙参数的JScrip
t函数一样调用它,如用foo()调用VBScript;Sub;foo过程。
三、数据共享;
;;在某些情形下混合运用VBScript和JScript;函数是非常依赖于的,但在不尽相同语言脚本之间构建数据也
可能会很精确。意味着这种对等的方法很简便:不管常用的是什么语言,只要是在页面级声明的变量就可以
给定援引。;
;对象的应用于方法也相同,可以取值配上适当的语言存储、修订属性或调用对象的方法。当然也就是说对
象的属性和方法是由创立该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript;中
调用一个不隙参数的VBScript对象的方法时,其调用方法也遵行JScript的调用规则,反之亦然。;
;;四、数组管理;
;数组提供者问题稍微精细一点。虽然数组也狮其它变量一样可以在多种不同语言脚本之间包涵,但必须出处
意并行方面的问题。;
;VBScript数组在JScript下可以用VBScript的符号所述,即用myArray(2)提到数组元素而不是JScri
pt的数组元素援引符号myArray[2]。此外,还可以运用于一个相同的JScript对象――VBArray对象将VBSc
ript数组类比为JScript数组。下面的代码从VBScript数组myVBArray创建者JScript数组myJSArray:;
var;Temp;=;new;VBArray(myVBArray)
var;myJSArray
myJSArray;=;Temp.toArray()
上述代码首先创始一个临时的VBArray对象,然后适用它的toArray()方法将自己切换为JScript;数
组。此后就可以象普通JScript数组一样用myJSArray,如;myJSArray[1]。但理应同样的是,toArray()
方法将把一个多维的VBArray叠加为一维的JScript数组。;
从VBScript中所述JScript数组更为适合于。虽然在VBScript中我们可以同样回访JScript数组就其的
方法和属性,但没必要次访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript;脚本中
存储JScript数组的长度属性,如下表:
x;=;myJSArray.length;
但无法从外部驱动器该数组的单个元素,下面的VBScript代码是不恰当的:;
x;=;myJSArray(3);
妥善解决该问题的一个十分困难的方法是执行者一个类比过程,如下面的代码右图,此处并不一定VBScript是缺省
的脚本语言:;
<%
Dim;Temp
Dim;myVBArray
Temp;=;myJSArray.join(",;")
myVBArray;=;Split(Temp,;",;")
%>
此处的JScript;join()方法将数组myJSArray元素切换到一个以逗号为分立天和的字符串,;VBScript
Split()函数将字符串类比为VBScript数组。忽略这里我们是在VBScript环境下调用JScript的join方法
依照此例,我们可以通过自定义VBScript函数来建模JScript的VBArray对象的toArray()方法以解决问题JSc
ript数组到VBScript数组的反转。;
五、小结;
在同一个ASP;工程内自如换用有所不同脚本语言不具许多优点,这些脚本之间的交互能力更为开发者集
成完全相同语言所获取的内置函数和其它功能带给了更多的机会,同时也使得发挥作用既可使用VBScript也需用
于JScript环境的标准化脚本库被选为不太可能。