可以創(chuàng)建一個(gè)包含多個(gè) Windows® 腳本部件的程序包,這樣不必注冊(cè)第二個(gè)腳本部件就可以實(shí)例化并使用其余的腳本部件。
例如,可以創(chuàng)建一個(gè)實(shí)現(xiàn) Automation 接口的腳本部件,并說(shuō)明了一系列屬性和方法。同一個(gè)程序包中的第二個(gè)腳本部件可能實(shí)現(xiàn)了 ASP 接口,該接口提供了訪問(wèn) Microsoft® Internet Information Services (IIS) 的服務(wù)器對(duì)象模型的途徑。然后可以在 Automation 腳本部件中創(chuàng)建一個(gè)方法或?qū)傩詠?lái)說(shuō)明該 ASP 腳本部件并使其成員成為可用的。
要引用來(lái)自別的實(shí)現(xiàn)的腳本部件,請(qǐng)?jiān)谝粋€(gè)說(shuō)明第二個(gè)腳本部件的方法中創(chuàng)建一個(gè)框架成員 — 屬性或方法。
要引用同一個(gè)腳本部件文件中的別的腳本部件
例如,下面的代碼演示了同一個(gè)程序包中的兩個(gè)腳本部件。在第一個(gè)腳本部件中, math 方法簡(jiǎn)單地引用了第二個(gè)腳本部件,后者說(shuō)明了 add 方法和 multiply 方法。
注意 CDATA 項(xiàng)是必需的,用來(lái)使 <script> 元素中的腳本成為不透明的。詳細(xì)信息請(qǐng)參閱腳本部件文件和 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)用所引用的腳本部件,請(qǐng)調(diào)用完整的成員層次來(lái)獲得它的方法或?qū)傩�。下面的示例演示了�?shí)現(xiàn)這種功能的若干方式:
' 創(chuàng)建第一個(gè)腳本部件的實(shí)例。 set o1 = CreateObject("Component.FrontEnd") ' 直接調(diào)用第二個(gè)腳本部件的函數(shù)。 msgbox(o1.math.add(3,5)) msgbox(o1.math.multiply(3,5)) ' 直接引用 math 方法創(chuàng)建第二個(gè)對(duì)象。 Set o2 = o1.math() msgbox(o2.add(4,5)) msgbox(o2.multiply(4,5))
每次調(diào)用 createComponent() 函數(shù)時(shí),都將創(chuàng)建所引用的腳本部件的一個(gè)新實(shí)例。如果需要在兩次調(diào)用期間保留實(shí)例信息,請(qǐng)用一個(gè)全局變量來(lái)存儲(chǔ)第二個(gè)腳本部件的指針,如下面的示例所示。
注意 CDATA 項(xiàng)是必需的,用來(lái)使 <script> 元素中的腳本成為不透明的。詳細(xì)信息請(qǐng)參閱腳本部件文件和 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 見前一個(gè)示例)