2009-11-01 31 views
5

Tôi đang cố viết một kịch bản đăng nhập WSH. Quản trị viên trong toàn bộ công ty cần có thể tùy chỉnh việc thực thi tập lệnh và thực thi các tập lệnh bổ sung, cho các vị trí và người dùng cụ thể. Để làm cho công việc của họ dễ dàng hơn, tôi muốn cung cấp API mà quản trị viên có thể truy cập trong tập lệnh của họ. Nếu tôi viết API của tôi bằng cách sử dụng JScript, nó sẽ có thể khởi tạo các đối tượng tôi xác định thông qua VBScript? Ví dụ: hãy xem xét mã sau:Tôi có thể khởi tạo các đối tượng được viết bằng JScript từ VBScript không?

<!-- The WSF logon script file --> 
<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration function 
      function OverNineThousand() { 
       return 9001; 
      } 

      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 
     </script> 

     <script language="VBScript"> 
      Dim bigNumber, workstation 

      '// This assignment works properly. 
      bigNumber = OverNineThousand() 

      '// This assignment causes an error. Am I doing it wrong? 
      Set workstation = New WorkstationClass() 

      '// Execution never gets this far 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 

Có cách nào để thực hiện những gì tôi đang cố gắng làm không?

Trả lời

7

VBScript và JScript dường như không đồng ý về cách khởi tạo đối tượng. Tuy nhiên, một khi đối tượng đã được khởi tạo, nó được cả hai ngôn ngữ nhận ra. Để giải quyết vấn đề này, tôi phải tạo đối tượng trong JScript và sau đó trả về đối tượng đó với trình gọi VBScript, như được minh họa dưới đây.

<package> 
    <job> 
     <script language="JScript"> 
      // A demonstration "class" 
      function WorkstationClass() { 
       var os = "Windows XP"; 

       this.getOperatingSystem = function() { 
        return os; 
       } 
      } 

      function CreateWorkstation() { 
       return new WorkstationClass(); 
      } 
     </script> 

     <script language="VBScript"> 
      Dim workstation 

      '// This assignment causes an error. 
      '// Set workstation = New WorkstationClass() 

      '// This works! 
      Set workstation = CreateWorkstation() 

      '// Prints "Windows XP" 
      WScript.Echo workstation.getOperatingSystem() 
     </script> 
    </job> 
</package> 
+0

Chỉ cần những gì tôi cần – JoshHetland

Các vấn đề liên quan