Объект Enumerator

С помощью объекта Enumerator можно получить доступ к любому элементу коллекции (в VBScript для этого служит цикл For Each).

Коллекцией в языке JScript называется множество элементов, которое отличается от массива тем, что к элементам коллекции нельзя получить прямой доступ с помощью индексов — можно только перемешать указатель текущего элемента на самый первый или следующий относительно текущего элемент.

Для создания нового объекта встроенного класса Enumerator используется конструктор следующего вида:
var е = new Enumerator(collection);
collection
Коллекция, для доступа к элементам которой и создается объект класса Enumerator. Сами коллекции обычно являются свойствами других объектов.

У объекта Enumerator нет свойств, а есть только 4 метода. Они позволяют получать доступ к начальному, следующему и текущему элементу коллекции и определить, достигнут ли конец коллекции.

Примеры

//Объявляем переменные

var FSO, Folder, Files, s;

//Создаем объект FileSystemObject

FSO = WScript.CreateObject("Scripting.FileSystemObject");

// Создаем объект Folder для корневого  диска С:\AA

Folder=FSO.GetFolder("С:\\AA");

// Создаем коллекцию файлов каталога

Files = new Enumerator(Folder.Files);

//Цикл по всем файлам

for (Files.moveFirst(); !Files.atEnd; Files.moveNext) {

//Добавляем строку с именем файла

s+=Files.item.Name+"\n";

//Выводим полученные строки на экран }

WScript.Echo(s);


var x;
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fc = new Enumerator(fso.Drives);
for (fc.moveFirst(); !fc.atEnd(); fc.moveNext()) 
 { x = fc.item();
   s='Drive '+x.DriveLetter+': ';
   if (x.DriveType == 0) s += "неизвестное устройство ";
   if (x.DriveType == 1) s += "устройство со сменным носителем ";
   if (x.DriveType == 2) s += "жёсткий диск " ;
   if (x.DriveType == 3) s += "сетевой диск ";
   if (x.DriveType == 4) s += "CD-ROM ";
   if (x.DriveType == 5) s += "RAM-диск ";
   if (x.IsReady) 
    { namedisk=(x.DriveType == 3)?x.ShareName:x.VolumeName;
      s += " Name=" +((namedisk.length > 0 )? namedisk : "[NO NAME] ");
      s +=" FileSystem="+x.FileSystem;
      s +=" FreeSpace="+Math.floor(x.FreeSpace/1024) +"КБ";
    } 
   else s +=" [disk not ready]";
   WScript.Echo(s);
 }