日期:2010-01-17 浏览次数:20833 次
学好一门编程语言有两个条件是必不可少的,一是理论与实践结合,在实际例程去验证书本上的理论能加深你对理论的理解;二是学会总结,把学习、运用中的心得体会记下来,当成一种经验或者教训加以提炼并在日后的应用中加以改进,一定能提高你对这门编程语言的认识。以下是笔者在学习与运用ASP编程中的一点经验,希望能对大家有所帮助。
ASP页面内VBs cript和Js cript的交互
ASP具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置函数。ASP开发环境提供了两种脚本引擎,即VBs cript(缺省)和Js cript。不过,开发者并没有被限制于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。
脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问题,或某个脚本已经写成但用的却是另外一种脚本语言。
此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBs cript脚本和Js cript脚本交互以最大限度地获得两种脚本语言的特色支持。
一、VBs cript和Js cript的内置函数
在VBs cript和Js cript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBs cript提供了许多用于操作字符串和格式化数据的函数,这些函数在Js cript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,Js cript所提供的用于管理数组、字符串编码等的函数在VBs cript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。
那么,如果在Js cript程序中需要一个VBs cript函数该怎么办呢?
二、异种脚本的互相调用
如果需要在Js cript脚本中调用一个VBs cript中内置的函数,则应该写一个VBs cript用户定义函数(在这里调用VBs cript内置函数),然后在Js cript脚本中象调用公用Js cript函数一样调用这个用户定义函数。
例如,如果要调用的VBs cript内置函数是FormatCurrency(),则可以声明如下自定义函数:
< s cript LANGUAGE="VBs cript" RUNAT="SERVER">
Function FormatValue(Value)
FormatValue = FormatCurrency(Value)
End Function
< /s cript>
接下来在Js cript代码中就可以象普通Js cript函数一样调用FormatValue()了。用类似的方法也可以实现VBs cript代码调用Js cript函数。
应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从Js cript脚本内调用一个不带参数的VBs cript过程(Sub)时应略加注意,此时在Js cript中应该象调用一个不带参数的Js cript函数一样调用它,如用foo()调用VBs cript Sub foo过程。
三、数据共享
在某些情形下混合运用VBs cript和Js cript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。
对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBs cript的过程调用,当从Js cript中调用一个不带参数的VBs cript对象的方法时,其调用方法也遵从Js cript的调用规则,反之亦然。
四、数组管理
数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。
VBs cript数组在Js cript下可以用VBs cript的符号引用,即用myArray(2)引用数组元素而不是Js cript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的Js cript对象——VBArray对象将VBs cript数组转换为Js cript数组。下面的代码从VBs crip