Enumerator 개체
업데이트: 2007년 11월
컬렉션에 있는 항목을 열거할 수 있도록 합니다.
varName = new Enumerator([collection])
인수
varName
필수적 요소. 열거자를 할당할 변수 이름입니다.collection
선택적 요소. 배열 또는 컬렉션과 같이 IEnumerable 인터페이스를 구현하는 개체입니다.
설명
JScript에서는 모든 컬렉션을 자동으로 열거할 수 있습니다. 따라서 Enumerator 개체를 사용하여 컬렉션 멤버에 액세스할 필요 없이 for...in 문을 사용하여 모든 멤버에 직접 액세스할 수 있습니다. Enumerator 개체를 사용하면 이전 버전과 호환됩니다.
컬렉션은 멤버에 직접 액세스할 수 없다는 점에서 배열과 다릅니다. 배열에서처럼 인덱스를 사용하는 대신 현재 항목 포인터를 컬렉션의 첫 번째 요소나 다음 요소로만 옮길 수 있습니다.
컬렉션의 모든 멤버에 액세스하는 방법을 제공하는 Enumerator 개체는 VBScirpt의 For...Each 문과 유사하게 작동합니다.
IEnumerable를 구현하는 클래스를 정의하여 JScript에서 컬렉션을 만들 수 있습니다. Visual Basic 등의 다른 언어를 사용하거나 ActiveXObject 개체를 사용하여 컬렉션을 만들 수도 있습니다.
예제 1
다음 코드에서는 Enumerator 개체를 사용하여 사용 가능한 드라이브가 있는 경우 드라이브 문자와 이름을 인쇄합니다.
// Declare variables.
var n, x;
var fso : ActiveXObject = new ActiveXObject("Scripting.FileSystemObject");
// Create Enumerator on Drives.
var e : Enumerator = new Enumerator(fso.Drives);
for (;!e.atEnd();e.moveNext()) { // Loop over the drives collection.
x = e.item();
if (x.DriveType == 3) // See if network drive.
n = x.ShareName; // Get share name
else if (x.IsReady) // See if drive is ready.
n = x.VolumeName; // Get volume name.
else
n = "[Drive not ready]";
print(x.DriveLetter + " - " + n);
}
시스템에 따라 다음과 같이 출력될 수 있습니다.
A - [Drive not ready]
C - DRV1
D - BACKUP
E - [Drive not ready]
예제 2
예제 1의 코드는 Enumerator 개체를 사용하지 않고 작동할 수 있도록 다시 작성할 수 있습니다. 다음과 같이 작성하면 열거형 멤버에 직접 액세스할 수 있습니다.
// Declare variables.
var n, x;
var fso : ActiveXObject = new ActiveXObject("Scripting.FileSystemObject");
// The following three lines are not needed.
// var e : Enumerator = new Enumerator(fso.Drives);
// for (;!e.atEnd();e.moveNext()) {
// x = e.item();
// Access the members of the enumeration directly.
for (x in fso.Drives) { // Loop over the drives collection.
if (x.DriveType == 3) // See if network drive.
n = x.ShareName; // Get share name
else if (x.IsReady) // See if drive is ready.
n = x.VolumeName; // Get volume name.
else
n = "[Drive not ready]";
print(x.DriveLetter + " - " + n);
}
속성
Enumerator 개체에는 속성이 없습니다.