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