Clases y Funciones definidas por el usuario

Para entender este tipo de programación vamos a ver un ejemplo donde creamos un objeto llamado casa que tiene las siguientes propiedades: nº de habitaciones, año de construcción, ¿tiene garaje?, estilo arquitectónico.

Para definir un objeto para guardar esta información (las propiedades) hay que hacer una función que las muestre en un listado. Nota: Esta función usa el comando this, que hace referencia al objeto activo. En este caso hace referencia al objeto activo que estamos creando.

function casa( habs, estil, fecha, garage){ this.habitaciones = habs
this.estilo = estil this.fecha_construcción = fecha this.tiene_garage = garage
}

Esta función es una especie de constructor que se usa en C++ para definir un objeto. Esto es porque en este sentido los objetos de JavaScript son similares a las estructuras de C y a las clases de C++. En los 3 casos a los miembros, funciones miembro o propiedades del objeto/clase/estructura se accede con el operador punto ( . ):

estructura.miembro clase.función_miembro() objeto.propiedad.

Hay varias cosas a ver en este ejemplo. El nombre de la función es el nombre del objeto: casa (en C++ el constructor tiene el nombre de la clase). La función no tiene valor de retorno.

Funciones (métodos)

Uno de los aspectos más potentes de la programación orientada a objetos de JavaScript es la posibilidad de crear clases con funciones miembro, llamadas métodos. Esto tiene varias ventajas como la organización y la asociación de funciones con clases. Los métodos, aunque programando se trabaje como si fueran propiedades no se tienen en cuenta a la hora de contarlos como tales.

Objetos como Arrays (Vectores)

Algunos lenguajes de programación soportan datos de tipo array (C, C++, Visual Basic, Java, etc.). Un array es una colección de items con índices los cuales son del mismo tipo.

En C por ejemplo para declarar un array de 10 datos de tipo entero, se hace de la forma: int nombre[10]; y estos enteros son definidos desde el nombre[0] al nombre[9]. Es más común que la base del primer índice sea un 0 (zero-based indexing) que un 1 (one-based indexing).

JavaScript usa 0 como base del primer índice. En JavaScript, quizá, arrays y objetos son 2 puntos de vista del mismo concepto. Cada objeto es un array de los valores de sus propiedades, y cada array es también un objeto. Volviendo al ejemplo anterior, el objeto micasa es un array con los siguientes cuatro.

Extender Objetos

Qué pasa si queremos más propiedades en un objeto: nada. Es posible extender dinámicamente un objeto simplemente tomando una nueva propiedad.

Funciones con un número variable de argumentos

Todas las funciones de JavaScript tienen las siguientes 2 propiedades:

La propiedad caller es el nombre de cada uno que llama a la función. La propiedad arguments es un array de todos los argumentos que no están en la lista de argumentos de la función. La propiedad caller permite a una función identificar y responder al entorno desde donde se llama.

La propiedades arguments permite escribir funciones que toman un número de argumento variable. Los argumentos de la lista de argumentos de una función son obligatorios mientras que los que están en la propiedad arguments son opcionales.

Fuente: Apuntes de informática III, Escuela Superior de Ingenieros de la Universidad de Navarra.