可以創(chuàng)建一個包含多個 Windows® 腳本部件的程序包,這樣不必注冊第二個腳本部件就可以實例化并使用其余的腳本部件。
例如,可以創(chuàng)建一個實現(xiàn) Automation 接口的腳本部件,并說明了一系列屬性和方法。同一個程序包中的第二個腳本部件可能實現(xiàn)了 ASP 接口,該接口提供了訪問 Microsoft® Internet Information Services (IIS) 的服務器對象模型的途徑。然后可以在 Automation 腳本部件中創(chuàng)建一個方法或屬性來說明該 ASP 腳本部件并使其成員成為可用的。
要引用來自別的實現(xiàn)的腳本部件,請在一個說明第二個腳本部件的方法中創(chuàng)建一個框架成員 屬性或方法。
要引用同一個腳本部件文件中的別的腳本部件
例如,下面的代碼演示了同一個程序包中的兩個腳本部件。在第一個腳本部件中, 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>
要調用所引用的腳本部件,請調用完整的成員層次來獲得它的方法或屬性。下面的示例演示了實現(xiàn)這種功能的若干方式:
' 創(chuàng)建第一個腳本部件的實例。
set o1 = CreateObject("Component.FrontEnd")
' 直接調用第二個腳本部件的函數(shù)。
msgbox(o1.math.add(3,5))
msgbox(o1.math.multiply(3,5))
' 直接引用 math 方法創(chuàng)建第二個對象。
Set o2 = o1.math()
msgbox(o2.add(4,5))
msgbox(o2.multiply(4,5))
每次調用 createComponent() 函數(shù)時,都將創(chuàng)建所引用的腳本部件的一個新實例。如果需要在兩次調用期間保留實例信息,請用一個全局變量來存儲第二個腳本部件的指針,如下面的示例所示。
注意 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 見前一個示例)