Windows 脚本部件  

引用同一个程序包中的其他脚本部件

可以创建一个包含多个 Windows® 脚本部件的程序包,这样不必注册第二个脚本部件就可以实例化并使用其余的脚本部件。

例如,可以创建一个实现 Automation 接口的脚本部件,并说明了一系列属性和方法。同一个程序包中的第二个脚本部件可能实现了 ASP 接口,该接口提供了访问 Microsoft® Internet Information Services (IIS) 的服务器对象模型的途径。然后可以在 Automation 脚本部件中创建一个方法或属性来说明该 ASP 脚本部件并使其成员成为可用的。

要引用来自别的实现的脚本部件,请在一个说明第二个脚本部件的方法中创建一个框架成员 — 属性或方法。

要引用同一个脚本部件文件中的别的脚本部件

  1. 在第一个脚本部件中声明一个属性或方法。
  2. 作为新属性或方法定义的一部分,调用 createComponent 函数。

    例如,下面的代码演示了同一个程序包中的两个脚本部件。在第一个脚本部件中, 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 见前一个示例)

请参阅

脚本部件文件的内容 | <package> | <component>