ASP页面内VBScript和JScript(转)

<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
ASP 页面内 VBScriptJScript  (仙人掌工作室·cpcw)

   ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。 ASP开发环境提供了两种脚本引擎,即 VBScript(缺省)和 JScript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的activex脚本引擎就能使用任何脚本语言。
   脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。

   此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在 ASP应用中如何让 VBScript脚本和 JScript脚本交互以最大限度地获得两种脚本语言的特色支持。

   一、 VBScriptJScript的内置函数

   在 VBScriptJScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如, 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过程。

   三、数据共享

   在某些情形下混合运用 VBScriptJScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。

   对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例 VBScript的过程调用,当从 JScript中调用一个不带参数的 VBScript对象的方法时,其调用方法也遵从 JScript的调用规则,反之亦然。

   四、数组管理

   数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。

   VBScript数组在 JScript下可以用 VBScript的符号引用,即用myarray(2)引用数组元素而不是 JScript的数组元素引用符号myarray[2]。此外,还可以使用一个特殊的 JScript对象——vbarray对象将 VBScript数组转换为 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()方法以实现 JScript数组到 VBScript数组的转换。

   五、小结

   在同一个 ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于 VBScript也可用于 JScript环境的通用脚本库成为可能。
< <script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值