Introduction to Ajax

Page 48

Introducción a AJAX

Capítulo 3. JavaScript avanzado

var otraFactura = new Factura(5, 4); // Ahora, laFactura.iva = otraFactura.iva = 7

El primer objeto creado de tipo Factura dispone de una propiedad llamada iva cuyo valor es 16. Más adelante, se modifica el prototipo del objeto Factura durante la ejecución del programa y se establece un nuevo valor en la propiedad iva. De esta forma, la propiedad iva del segundo objeto creado vale 7. Además, el valor de la propiedad iva del primer objeto ha cambiado y ahora vale 7 y no 16. Aunque la modificación del prototipo en tiempo de ejecución no suele ser una operación que se realice habitualmente, sí que es posible modificarlo de forma accidental. Ejercicio 2 Modificar el ejercicio anterior del objeto Factura para crear una pseudoclase llamada Factura y que permita crear objetos de ese tipo. Se deben utilizar las funciones constructoras y la propiedad prototype. Para instanciar la clase, se debe utilizar la instrucción Factura(cliente, elementos), donde cliente también es una pseudoclase que guarda los datos del cliente y elementos es un array simple que contiene las pseudoclases de todos los elementos que forman la factura. Una de las posibilidades más interesantes de la propiedad prototype es que también permite añadir y/o modificar las propiedades y métodos de los objetos predefinidos por JavaScript. Por lo tanto, es posible redefinir el comportamiento habitual de algunos métodos de los objetos nativos de JavaScript. Además, se pueden añadir propiedades o métodos completamente nuevos. Si por ejemplo se considera la clase Array, esta no dispone de un método que indique la posición de un elemento dentro de un array (como la función indexOf() de Java). Modificando el prototipo con el que se construyen los objetos de tipo Array, es posible añadir esta funcionalidad: Array.prototype.indexOf = function(objeto) { var resultado = -1; for(var i=0; i<this.length; i++) { if(this[i] == objeto) { resultado = i; break; } } return resultado; }

El código anterior permite que todos los arrays de JavaScript dispongan de un método llamado indexOf que devuelve el índice de la primera posición de un elemento dentro del array o -1 si el elemento no se encuentra en el array, tal y como sucede en otros lenguajes de programación. El funcionamiento del método anterior consiste en recorrer el array actual (obteniendo su número de elementos mediante this.length) y comparar cada elemento del array con el elemento que se quiere encontrar. Cuando se encuentra por primera vez el elemento, se devuelve su posición dentro del array. En otro caso, se devuelve -1. www.librosweb.es

48


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.