可以创建一个包含多个 Windows® 脚本部件的程序包,这样不必注册第二个脚本部件就可以实例化并使用其余的脚本部件。
例如,可以创建一个实现 Automation 接口的脚本部件,并说明了一系列属性和方法。同一个程序包中的第二个脚本部件可能实现了 ASP 接口,该接口提供了访问 Microsoft® Internet Information Services (IIS) 的服务器对象模型的途径。然后可以在 Automation 脚本部件中创建一个方法或属性来说明该 ASP 脚本部件并使其成员成为可用的。
要引用来自别的实现的脚本部件,请在一个说明第二个脚本部件的方法中创建一个框架成员 属性或方法。
要引用同一个脚本部件文件中的别的脚本部件
例如,下面的代码演示了同一个程序包中的两个脚本部件。在第一个脚本部件中, math 方法简单地引用了第二个脚本部件,后者说明了 add 方法和 multiply 方法。
注意 CDATA 项是必需的,用来使 <script> 元素中的脚本成为不透明的。详细信息请参阅脚本部件文件和 XML 一致性。
<?XML version="1.0"?> <package> <component id="component1"> <registration progid="Component.FrontEnd"/> <public> <property name="math"/> </public> <script language="JScript"> <![CDATA[ var math = createComponent("component2") ]]> </script> </component> <component id="component2"> <registration progid="Component.Math"/> <public> <method name="add"/> <method name="multiply"/> </public> <script language="JScript"> <![CDATA[ function add(n1, n2){ return n1+n2; } function multiply(n1, n2){ return n1*n2; } ]]> </script> </component> </package>
要调用所引用的脚本部件,请调用完整的成员层次来获得它的方法或属性。下面的示例演示了实现这种功能的若干方式:
' 创建第一个脚本部件的实例。 set o1 = CreateObject("Component.FrontEnd") ' 直接调用第二个脚本部件的函数。 msgbox(o1.math.add(3,5)) msgbox(o1.math.multiply(3,5)) ' 直接引用 math 方法创建第二个对象。 Set o2 = o1.math() msgbox(o2.add(4,5)) msgbox(o2.multiply(4,5))
每次调用 createComponent() 函数时,都将创建所引用的脚本部件的一个新实例。如果需要在两次调用期间保留实例信息,请用一个全局变量来存储第二个脚本部件的指针,如下面的示例所示。
注意 CDATA 项是必需的,用来使 <script> 元素中的脚本成为不透明的。详细信息请参阅脚本部件文件和 XML 一致性。
<component id="component1"> <registration progid="Component.FrontEnd"/> <public> <property name="math"> <get/> </property> </public> <script language="JScript"> <![CDATA[ var m = createComponent("component2") function get_math(){ return m } ]]> </script> </component> (Component2 见前一个示例)