Enumerator (Objeto)
Actualización: noviembre 2007
Habilita la enumeración de los elementos de una colección.
varName = new Enumerator([collection])
Argumentos
varName
Necesario. Nombre de variable al que se asigna el enumerador.collection
Opcional. Cualquier objeto que implemente la interfaz IEnumerable, como una matriz o una colección.
Comentarios
Todas las colecciones son enumerables automáticamente en JScript. Por tanto, no es necesario utilizar el objeto Enumerator para tener acceso a los miembros de una colección. Puede tener acceso a cualquier miembro directamente, utilizando la instrucción for...in. El objeto Enumerator se proporciona por compatibilidad con versiones anteriores.
Las colecciones se diferencian de las matrices en que a los miembros de una colección no se puede tener acceso directo. En lugar de utilizar índices, como se haría con las matrices, sólo se puede mover el puntero del elemento actual al primer elemento o al siguiente elemento de una colección.
El objeto Enumerator, que proporciona un modo de tener acceso a cualquier miembro de una colección, se comporta de manera similar a la instrucción For...Each de VBScript.
Puede crear una colección en JScript definiendo una clase que implemente IEnumerable. Las colecciones se pueden crear también utilizando otro lenguaje (como Visual Basic) o con un objeto ActiveXObject.
Ejemplo 1
El siguiente código utiliza el objeto Enumerator para imprimir las letras de las unidades disponibles y sus nombres (si están disponibles):
// 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);
}
Dependiendo del sistema, el resultado será como sigue:
A - [Drive not ready]
C - DRV1
D - BACKUP
E - [Drive not ready]
Ejemplo 2
El código del ejemplo 1 se puede escribir de nuevo para que funcione sin utilizar el objeto Enumerator. En este caso, se tiene acceso a los miembros de una enumeración directamente:
// 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);
}
Propiedades
El objeto Enumerator no tiene propiedades.
Métodos
Enumerator (Métodos del objeto)