Objeto enumerador
Permite a enumeração de itens de uma coleção.
varName = new Enumerator([collection])
Argumentos
varName
Obrigatório. O nome da variável à qual o enumerador está atribuído.collection
Opcional. Qualquer objeto que implementa o IEnumerable interface, como uma matriz ou coleção.
Comentários
Cada coleção é automaticamente enumerable em JScript. Conseqüentemente, você não precisará usar o Enumerator o objeto para acessar membros de uma coleção. Você pode acessar qualquer membro diretamente usando o for...in instrução. O Enumerator objeto para trás é fornecido para compatibilidade.
Coleções diferem dos conjuntos de membros de uma coleção não estão diretamente acessíveis. Em vez de usar os índices, como você faria com arrays, você só pode mover o ponteiro atual do item para o primeiro ou o próximo elemento de uma coleção.
O Enumerator o objeto, que fornece uma maneira de acessar qualquer membro de uma coleção, se comporta de maneira semelhante do para...Cada a instrução no VBScript.
Você pode criar uma coleção de JScript, definindo uma classe que implementa IEnumerable. Coleções também podem ser criadas usando outro idioma (como Visual Basic) ou por um ActiveXObject objeto.
Exemplo 1
O código a seguir usa a Enumerator o objeto para imprimir as letras das unidades disponíveis e seus nomes (se disponível):
// 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);
}
Dependendo do sistema, a saída será assim:
A - [Drive not ready]
C - DRV1
D - BACKUP
E - [Drive not ready]
Exemplo 2
O código de exemplo 1 poderá ser reescrito para trabalhar sem usar o objeto Enumerator. Aqui, os membros de uma enumeração são acessados diretamente.
// 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);
}
Propriedades
O Enumerator o objeto tem propriedades nenhum.