Los objetos de JScript son colecciones de propiedades y métodos. Un método es una función que es miembro de un objeto. Una propiedad es un valor o un conjunto de valores (en forma de matriz o de objeto) que es miembro de un objeto. JScript admite cuatro tipos de objetos: objetos intrínsecos, objetos creados por el usuario, objetos de host, proporcionados por el host (como window y document en Internet Explorer), y objetos de Active X (componentes externos).
En JScript, los objetos y las matrices se tratan de forma casi idéntica. A ambos se les puede asignar propiedades arbitrarias; en realidad, las matrices tan solo son un tipo especial de objeto. La diferencia entre las matrices y los objetos es que las primeras tienen una propiedad length que es "mágica" y que otros objetos no poseen. Esto significa que si se asigna un valor a un elemento de una matriz que es mayor que el resto de los elementos (por ejemplo, miMatriz[100] = "hola") la propiedad length se actualizará automáticamente a 101 (la nueva longitud). De forma semejante, si modifica la propiedad length de una matriz, se eliminarán todos los elementos que ya no formen parte de la misma.
Todos los objetos de JScript admiten propiedades "que se expanden" (expando) o propiedades que pueden agregarse o quitarse dinámicamente en tiempo de ejecución. A dichas propiedades se les puede asignar cualquier nombre, incluidos números. Si el nombre de la propiedad es un identificador simple, puede escribirse después del nombre del objeto con un punto, como en:
var miObj = new Object(); // Agregar dos propiedades expando, 'name' y 'age'. miObj.name = "Alfredo"; miObj.age = "22";
Si el nombre de la propiedad no es un identificador simple o no se conoce en el momento de escribir la secuencia de comandos, puede incluir una expresión arbitraria dentro de corchetes para indizar la propiedad. Los nombres de todas las propiedades expando de JScript se convierten en cadenas antes de agregarlos al objeto.
var miObj = new Object(); // Agregar dos propiedades expando que no puedan escribirse en la // sintaxis de object.property. // La primera contiene caracteres no válidos (espacios), de modo que debe // escribirse entre corchetes. miObj["identificador no válido"] = "Este es el valor de la propiedad"; // El segundo nombre que se expande es un número, por lo que también debe // colocarse entre corchetes. miObj[100] = "100";
Normalmente, a los elementos de la matriz se les asignan índices numéricos que empiezan a partir de cero. Estos son los elementos que interactúan con la propiedad length. Puesto que todas las matrices son objetos, también admiten propiedades expando. Observe, sin embargo, que este tipo de propiedades no pueden interactuar con la propiedad length. Por ejemplo:
// Una matriz con tres elementos var miMatriz = new Array(3); // Agregar algunos datos miMatriz[0] = "Hola"; miMatriz[1] = 42; miMatriz[2] = new Date(2000, 1, 1); // Muestra 3, la longitud de la matriz window.alert(miMatriz.length); // Agregar algunas propiedades expando miMatriz.expando = "¡JScript!"; miMatriz["otra propiedad Expando"] = "Windows"; // Continúa mostrando 3, ya que las dos propiedades expando // no afectan a la longitud. window.alert(miMatriz.length);
Aunque JScript no admite directamente matrices multidimensionales, puede almacenar cualquier tipo de datos dentro de los elementos de la matriz, incluidas otras matrices. Si almacena matrices dentro de los elementos de otra matriz puede conseguir el comportamiento de una matriz multidimensional. Por ejemplo, el siguiente código crea una tabla de multiplicación para los números hasta el 5:
// Cambiar este número para una tabla mayor. var iNumMax = 5; // Contadores del bucle var i, j; // Nueva matriz. Lo convierte en iNumMax + 1, ya que las matrices // comienzan a contar desde cero, no desde 1. var TablaMultiplicacion = new Array(iNumMax + 1); // Ejecutar el bucle para cada número mayor (cada fila de la tabla) for (i = 1; i <= iNumMax; i++) { // Crear las columnas de la tabla TablaMultiplicacion[i] = new Array(iNumMax + 1); // Rellenar la fila con los resultados de la multiplicación for (j = 1; j <= iNumMax; j++) { TablaMultiplicación[i][j] = i * j; } } window.alert(TablaMultiplicación[3][4]); // Muestra 12 window.alert(TablaMultiplicación[5][2]); // Muestra 10 window.alert(TablaMultiplicación[1][4]); // Muestra 4
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com. |