Object (Objeto de JScript)
Actualización: noviembre 2007
Todos los objetos de JScript basados en el objeto Object admiten las propiedades expando, propiedades que se pueden agregar y eliminar mientras el programa está en ejecución.
Utilizar el objeto Object
A dichas propiedades se les puede asignar cualquier nombre, incluidos números. El nombre de una propiedad que es un identificador simple, puede escribirse después del punto que sigue al nombre del objeto, como en:
var myObj = new Object();
// Add two expando properties, 'name' and 'age'
myObj.name = "Fred";
myObj.age = 53;
También puede tener acceso a las propiedades de un objeto mediante el operador índice []. Es necesario si el nombre de la propiedad no es un identificador simple o no se conoce cuando se escribe la secuencia de comandos. Una expresión arbitraria, incluido un identificador simple, entre corchetes, puede indizar la propiedad. Los nombres de todas las propiedades expando de JScript se convierten en cadenas antes de ser agregados al objeto:
Cuando se utiliza el operador índice, el objeto se considera como matriz asociativa. Una matriz asociativa es una estructura de datos que asocia dinámicamente valores de datos arbitrarios a cadenas arbitrarias. En este ejemplo, se agregan propiedades expando que no tienen identificadores simples.
var myObj = new Object();
// This identifier contains spaces.
myObj["not a simple identifier"] = "This is the property value";
// This identifier is a number.
myObj[100] = "100";
Aunque el operador índice se suele asociar al acceso a los elementos de una matriz, cuando se usa con objetos el índice es siempre el nombre de propiedad expresado como un literal de cadena.
Los objetos Array tienen una propiedad length especial que cambia cuando se agregan elementos nuevos. En general, los objetos no tienen la propiedad length incluso cuando se usa el operador índice para agregar propiedades.
Observe la evidente diferencia entre las dos maneras de tener acceso a las propiedades de objeto:
Operador |
El nombre de la propiedad se trata como |
Lo que indica que el nombre de la propiedad |
---|---|---|
Punto (.) |
Un identificador |
No puede tratarse como datos |
Índice ([]) |
Un literal de cadena |
Can tratarse como datos |
Esta diferencia resulta útil cuando no se conocen los nombres de propiedad hasta el momento de la ejecución (por ejemplo, cuando se construyen objetos basados en datos introducidos por el usuario). Para extraer todas las propiedades de una matriz asociativa, se debe usar el bucle for ... in .