import 陳述式
啟動包含在目前指令碼或外部程式庫中的命名空間 (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