Share via


import 陳述式

更新:2007 年 11 月

啟動包含在目前指令碼或外部程式庫中的命名空間 (Namespace) 的存取。

import namespace

引數

  • namespace
    必要項。要匯入的命名空間名稱。

備註

import 陳述式在具 namespace 名稱的全域物件上建立屬性 (Property),並且將它初始化以包含對應至要匯入之 namespace 的物件。使用 import 陳述式所建立的任何屬性不能指派、刪除或列舉。當指令碼啟動時,會執行所有的 import 陳述式。

import 陳述式讓您的指令碼可以使用命名空間。使用 package 陳述式可以在指令碼中定義命名空間,或者是由其外部組件 (Assembly) 提供。除非當時正在編譯程式且 /autoref 選項是關閉的,否則如果在指令碼中找不到命名空間,JScript 就會在指定的組件目錄中搜尋符合命名空間名稱的組件,。例如,如果您匯入 Acme.Widget.Sprocket 命名空間而且沒有在目前指令碼內定義命名空間,JScript 會在下列組件中搜尋命名空間:

  • Acme.Widget.Sprocket.dll

  • Acme.Widget.dll

  • Acme.dll

您可以明確地指定要包含的組件名稱。如果 /autoref 選項關閉或命名空間的名稱不符合組件名稱時,就必須這樣做。當 ASP.NET 使用 @ Import@ Assembly 指示詞來完成這項工作時,命令列編譯器會使用 /reference 選項指定組件名稱。例如,若要明確包含組件 mydll.dll,您可以在命令列輸入

jsc /reference:mydll.dll myprogram.js

若要從 ASP.NET 網頁包含組件,您可以使用

<%@ Import namespace = "mydll" %>
<%@ Assembly name = "mydll" %>

在程式碼中參考類別時,編譯器首先搜尋區域範圍 (Local Scope) 中的類別。如果編譯器並未發現符合的類別,編譯器會在命名空間中以匯入的順序來搜尋類別,並且在找到符合的類別時停止。您可以使用完整的類別名稱以確定類別衍生來源的命名空間。

JScript 不會自動匯入巢狀命名空間,每個命名空間必須使用完整的命名空間來匯入。例如,若要從名為 Outer 的命名空間和名為 Outer.Inner 的巢狀命名空間來存取類別,則兩個命名空間都必須匯入。

範例

下列範例定義三個簡單的套件,並將命名空間匯入程式碼中。通常,每個套件會在不同的組件中,允許套件內容的維護和散發。

// Create a simple package containing a class with a single field (Hello).
package Deutschland {
   class Greeting {
      static var Hello : String = "Guten tag!";
   }
};
// Create another simple package containing two classes.
// The class Greeting has the field Hello.
// The class Units has the field distance.
package France {
   public class Greeting {
      static var Hello : String = "Bonjour!";
   }
   public class Units {
      static var distance : String = "meter";
   }
};
// Use another package for more specific information.
package France.Paris {
   public class Landmark {
      static var Tower : String = "Eiffel Tower";
   }
};

// Declare a local class that shadows the imported classes.
class Greeting {
   static var Hello : String = "Greetings!";
}

// Import the Deutschland, France, and France.Paris packages.
import Deutschland;
import France;
import France.Paris;

// Access the package members with fully qualified names.
print(Greeting.Hello);
print(France.Greeting.Hello);
print(Deutschland.Greeting.Hello);
print(France.Paris.Landmark.Tower);
// The Units class is not shadowed, so it can be accessed with or without a fully qualified name.
print(Units.distance);
print(France.Units.distance);

這個指令碼的輸出為:

Greetings!
Bonjour!
Guten tag!
Eiffel Tower
meter
meter

需求

.NET 版本

請參閱

參考

package 陳述式

/autoref

/lib

@ Assembly

@ Import