Para crear instancias de sus propios objetos, primero debe definir una función constructora para ellos. Una función constructora crea un objeto y le asigna propiedades y, si es necesario, métodos. Por ejemplo, el ejemplo siguiente define una función constructora para objetos pasta. Observe el uso de la palabra clave this, que hace referencia al objeto actual.
// pasta es un constructor que utiliza cuatro parámetros. función pasta (cereal, grosor, forma, conHuevo) { // ¿De qué tipo de cereal está hecha? this.cereal = cereal; // ¿Qué grosor tiene? (número) this.grosor = grosor; // ¿Cuál es su forma? (cadena) this.forma = forma; // ¿Incluye yema de huevo como aglutinante? (booleano) this.conHuevo = conHuevo; }
Una vez que se ha definido un constructor de objetos, se crean sus instancias mediante el operador new.
var espagueti = new pasta("trigo", 0,2, "círcular", true); var linguini = new pasta("trigo", 0,3, "oval", true);
Puede agregar propiedades a una instancia de un objeto para cambiarla, pero estas propiedades no entrarán a formar parte de la definición del resto de los objetos creados con el mismo constructor ni aparecerán en otras instancias a menos que se agreguen específicamente. Si desea que las propiedades adicionales se muestren en todas las instancias del objeto, debe agregarlas a la función constructora o al objeto del prototipo del constructor (los prototipos se describen en la documentación de características avanzadas).
// Propiedades adicionales para espagueti. espagueti.color = "amarillo paja pálido"; espagueti.cocciónseco = 7; espagueti.cocciónfresco = 0,5; var chowFun = new pasta("arroz", 3, "plana", false); // Ni el objeto chowFun ni ninguno de los objetos // pasta existentes tienen las tres propiedades nuevas que se han agregado // al objeto espagueti. // Al agregar la propiedad 'grupoAlimento' al objeto prototipo pasta, // ésta queda disponible para todas las instancias de los objetos pasta // incluidas aquellas que ya se han creado. pasta.prototipo.grupoAlimento = "carbohidratos" // ahora todos los objetos espagueti.grupoAlimento, grupoAlimento, etc. // contienen el valor "carbohidratos"
Es posible incluir métodos (funciones) en la definición de un objeto. Una manera de hacerlo consiste en agregar una propiedad a la función constructora que haga referencia a una función definida en cualquier otra parte. Por ejemplo, el siguiente ejemplo expande la función constructora de pasta definida anteriormente de modo que incluya un método toString, al que se llamará si se muestra el valor del objeto.
// pasta es un constructor que utiliza cuatro parámetros. // La primera parte es la misma que en el ejemplo anterior función pasta (cereal, grosor, forma, conHuevo) { // ¿De qué tipo de cereal está hecha? this.cereal = cereal; // ¿Qué grosor tiene? (número) this.grosor = grosor; // ¿Cuál es su forma? (cadena) this.forma = forma; // ¿Incluye yema de huevo como aglutinante? (booleano) this.conHuevo = conHuevo; // Aquí agregaremos el método toString (que se define a continuación). // Tenga en cuenta que no ponemos los paréntesis después del nombre de // la función; no se trata de una llamada a la función, sino de una // referencia a la propia función. this.toString = pastaToString; } // La función real para mostrar el contenido de un objeto pasta. function pastaToString() { // devuelve las propiedades del objeto return "Cereal: " + this.cereal + "\n" + "Grosor: " + this.grosor + "\n" + "Forma: " + this.forma + "\n" + "¿Huevo?: " + Boolean(this.conHuevo); } var espagueti = new pasta("trigo", 0,2, "circular", true); // Esto llamará a toString() y mostrará las propiedades // del objeto espagueti (se requiere Internet Explorer). window.alert(espagueti);
Ayuda de Javascript y Vbscript para Javascripts.astalaweb.com. |