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