次のように、JS で定義されたトップレベルの関数を VBScript から呼び出すことができ、その逆も可能です。
<%@ language="Chakra" %>
<script language='JavaScript' runat='server'>
function jsFunction1() {
for (var i=0;i<10;i++) Response.Write(i+"<br>");
vbFunction2();
}
</script>
<script language='VBScript' runat='server'>
Sub vbFunction1 ()
Response.Write("VB Hello <br/>" & VbCrLf)
jsFunction1()
End Sub
Sub vbFunction2 ()
Response.Write("VB Goodbye <br/>" & VbCrLf)
End Sub
</script>
<script language="JavaScript" runat="server">
vbFunction1();
</script>
次のように、JS を VBScript モジュールに含めることもできます。
<%@ language="VBScript" %>
<script language="Javascript" runat="server" src="includedModule.js"></script>
<script language="VBScript" runat="server">
....
</script>
...そして、includedModule.js で定義された関数は VBScript で使用できます。
しかし、次のように、プロトタイプの OO を使用して定義された Javascript クラスがあるとします。
(function() {
MyObj = function() {
this.foo = ...
...
};
MyObj.prototype.method1 = function() { .. };
MyObj.prototype.method2 = function() { .. };
}());
VBScript からそのオブジェクト (別名タイプまたはクラス) を使用するにはどうすればよいですか?
バニラのアプローチ...
Dim foo
Set foo = New MyObj
...動作しません。
どちらでもない
Dim foo
foo = MyObj()
... this
JS 関数が VBScript から呼び出されたときに明らかに定義されていないためです。か何か。
どうすればそれができますか?
これが価値がある理由: Javascript で利用できる OO ライブラリがあり、VBScript から使用すると興味深いでしょう。