Objetos en JavaScript

JavaScript ofrece una aproximación sencilla al modelo de programación orientada a objetos. En definitiva, un objeto es una estructura que encapsula tanto datos (variables) como la funcionalidad para manejarlos.

Los objetos pueden ser definidos utilizando un inicializador:

objeto = {propiedad1:valor1, propiedad2:valor2, …};
objeto1 = {color:»rojo», forma:»círculo», tamano:20};

O a través de una función que haga de «constructor». Esta es una opción más cercana a la filosofía de otros lenguajes orientados a objetos que utilizan clases para la declaración de objetos.

function objeto()
{
this.color = «rojo»;
this.forma = «cuadrado»;
this.tamano = 20;
}

Para crear nuevas instancias del objeto:

objeto2 = new objeto();

Por supuesto, los constructores pueden recibir parámetros, utilizados habitualmente para inicializar el objeto:

function objeto (color, forma, tamano)
{
this.color = color;
this.forma = forma;
this.tamano = tamano;
}

objeto3 = new objeto («rojo», «triangulo», 50);

Una vez creado el objeto, las propiedades se pueden definir (agregar o modificar) de forma dinámica en tiempo de ejecución:

objeto3.peso = 30;
objeto3.nombre = «ventana»;

También se puede modificar el constructor en tiempo de ejecución, utilizando la palabra clave ‘prototype‘:

objeto.prototype.estado = null;
objeto4 = new objeto («rojo», «circulo», 30, «solido»);

A partir de JavaScript 1.1 los parámetros definidos mediante índices en lugar de nombres deben ser referenciados con índices. Los parámetros definidos mediante nombres deben ser referenciados a través de dichos nombres. La excepción a esta regla son los objetos generados a partir de elementos HTML, que permiten el acceso a sus propiedades (por ejemplo, elementos de un formulario) a través de índices (que siguen el orden de creación de la página) o sus propios nombres.

objeto4[10] = «Otra propiedad»;
cadena = objeto[10];

El acceso a las propiedades de los objetos se lleva a cabo a través del operador de alcance ‘.’ (punto). Por ejemplo, si se crean objetos que contienen a otros objetos. El acceso a las propiedades más internas se haría:

objeto_superior.obj_nivel_1.obj_nivel2.propiedad_obj_nivel_2

Los objetos también pueden definir y encapsular su propia funcionalidad a través de métodos (funciones internas). Estas funciones se definen como una función cualquiera y luego se añaden como las demás propiedades del objeto:

// declaración del método
function muestraCaracteristicas ()
{
document.write («color: «+ this.color + «forma: » + this.forma);
}

// constructor
function objeto (color, forma, tamano)
{
this.color = color;
this.forma = forma;
this.tamano = tamano;
this.muestraCaracteristicas = muestraCaracteristicas;
}

// instanciación y utilización del objeto

objeto5 = new objeto («rosa», «cubo», 60);
objeto5.muestraCaracteristicas();

A partir de JavaScript 1.1, los objetos pueden ser eliminados de memoria utilizando el operador ‘delete‘:

delete objeto5; // objeto5 deja de estar disponible

Artículo (C) Epsilon Eridani.