簡體   English   中英

如何在 ASP-Classic 或 WSH 環境中使用來自 VBScript 的 Javascript OO 類?

[英]How can I use Javascript OO classes from VBScript, in an ASP-Classic or WSH environment?

我知道我可以從 VBScript 調用 JS 中定義的頂級函數,反之亦然,如下所示:

<%@ 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 class,如下所示:

(function() {

  MyObj = function() {
    this.foo = ...
    ...
  };

  MyObj.prototype.method1 = function() { .. };
  MyObj.prototype.method2 = function() { .. };
}());

我如何使用 VBScript 中的 object(又名類型或類)?

香草的方法......

Dim foo
Set foo = New MyObj

...不起作用。

也沒有

Dim foo
foo = MyObj()

...因為當從 VBScript 調用 JS function 時, this顯然沒有定義。或者什么的。

那我該怎么做呢?

這是有價值的原因:Javascript 中有可用的 OO 庫,從 VBScript 開始使用會很有趣。

我不知道如何避免VBScript無法直接調用Javascript“構造函數”function的問題。我處理它的方式是簡單地定義一個墊片:Javascript中的頂級function調用構造函數4從7760560788和8888返回引用。

所以:

<script language='javascript' runat='server'>(function() {  
  MyObj = function() {  
    this.foo = ...  
    ...  
  };  

  MyObj.prototype.method1 = function() { .. };  
  MyObj.prototype.method2 = function() { .. };  

  // define a shim that is accessible to vbscript
  Shim = {construct: function() { return new MyObj(); } };

}());  
</script>

<script language='vbscript' runat='server'>
  Dim foo
  Set foo = Shim.construct()
   ...
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM