Оператор import
Позволяет получить доступ к пространству имен, которое содержится в текущем скрипте или во внешней библиотеке.
import namespace
Аргументы
- namespace
Обязательный. Имя пространства имен для импорта.
Заметки
Оператор import создает свойство в глобальном объекте с именем, переданным в аргументе namespace, и инициализирует его объектом, соответствующем импортируемому пространству имен. Все свойства, созданные с помощью оператора import, не могут быть удалены, перечислены, и им нельзя присвоить значение. Все операторы import выполняются при запуске скрипта.
Оператор import делает пространство имен доступным для скрипта. Пространство имен можно определить в скрипте с помощью оператора package или предоставить во внешней сборке. Если пространство имен не найдено в скрипте, JScript выполняет поиск сборки, соответствующей имени пространства имен, в указанных каталогах, если только программа не компилируется с выключенным параметром /autoref. Например, если импортируется пространство имен Acme.Widget.Sprocket и это пространство имен не определено в текущем скрипте, JScript будет выполнять поиск пространства имен в следующих сборках:
Acme.Widget.Sprocket.dll
Acme.Widget.dll
Acme.dll
Можно указать имя сборки, которую требуется включить, явным образом. Это необходимо делать, если выключен параметр /autoref или имя пространства имен не совпадает с именем сборки. В компиляторе командной строки для указания имени сборки используется параметр /reference, а в среде ASP.NET для выполнения этой задачи применяются директивы @ Import и @ Assembly. Например, чтобы явно включить сборку mydll.dll, в командной строке следует ввести следующую команду:
jsc /reference:mydll.dll myprogram.js
Чтобы включить сборку на странице ASP.NET, используется следующий код:
<%@ Import namespace = "mydll" %>
<%@ Assembly name = "mydll" %>
Если в коде имеется ссылка на класс, компилятор сначала выполняет поиск этого класса в локальной области видимости. Если соответствующий класс не найден, компилятор выполняет поиск класса в каждом пространстве имен в том порядке, в котором они импортируются, и прекращает поиск при первом обнаружении соответствия. Можно точно указать, от какого пространства имен наследует класс, используя полное имя класса.
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