Java Script orientado a objetos
No todos los desarrolladores están de acuerdo sobre si JavaScript es un lenguaje de programación orientado a objetos o no, pero es indiscutible que es una herramienta excelente para el desarrollo de aplicaciones que trabajen con trabajar con clases y objetos.
Clases y Objetos
Para entender la programacion orientada a objetos debemos primero entender lo que es una clase, pero primero diremos que un objeto es un conjunto de atributos y metodos agrupados.
Una clase es un grupo de objetos que comparten los mismos atributos y métodos, veamos como podemos crear una clase llamada popup, como observareis no hay ninguna diferéncia con una funcion solo que al crearlo usamos new:
<script language="javascript">
// Creamos la clase
function popup ( ) {
// ...
}
ventana = new popup ();
</script>
Los atributos
La clase que acabamos de crear tendrá sus atributos, que podrán ser publicos (accesibles desde fuera del objeto) o privados (solo accesibles desde el código del objeto).
Vamos a añadir un atributo público a la clase que hemos creado para indicar la URL del popup:
<script language="javascript">
// Creamos la clase
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// ...
}
ventana = new popup ();
</script>
Y le añadimos también una clase privada para almacenar el objeto window de la ventana abierta.
<script language="javascript">
// Creamos la clase
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// Atributo privado para el objeto window
var ventana = null;
// ...
}
ventana = new popup ();
ventana.url = 'http://www.taringa.net/';
</script>
Los métodos
Al crear un objeto de tipo imagen se ejecutará el metodo constructor de la imagen que será en el caso de nuestro ejemplo la funcion popup, cuando se ejecuta, este crea el objeto y todas sus variables (atributos) y funciones (metodos).
En el interior de esta función constructor, podemos crear nuevas funciones públicas y privadas que a su vez, podrían ser constructor de un objeto 'hijo', vamos a completar el ejemplo anterior añadiendo un par de metodos.
<script language="javascript">
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// Atributo privado para el objeto window
var ventana = null;
// Metodo público para abrir el popup
this.abrir = function ( ) {
// Generamos la ventana
ventana = window.open ( this.url );
// Si no hay ventana llamamos al error
if ( ! ventana ) error ( 'El popup ha sido bloqueado' );
}
// Metodo privado para alertar un mensaje en caso de error
var error = function ( texto ) {
// Mostramos el error
alert ( texto );
}
}
ventana = new popup ();
ventana.url = 'http://www.taringa.net/';
ventana.abrir ();
</script>
La visibilidad de los elementos
Los elementos de un objeto ( metodos y clases ) són accesibles desde el exterior del mismo objeto cuando los creamos con this. tal y como hemos observado en el ejemplo con url y abrir:
<script language="JavaScript">
// ...
ventana.url = 'http://www.taringa.net/';
ventana.abrir ();
</script>
Por otro lado tambien hemos creado los objetos ventana y error, pero al crearlos con var solo serán accesibles desde el interior de la clase y sus subclases y funciones:
<script language="JavaScript">
// ...
ventana.url = 'http://www.taringa.net/';
// Llamamos a un metodo privado
// Error: ventana.error is not a function
ventana.error ( 'Hola amigo' );
</script>
No todos los desarrolladores están de acuerdo sobre si JavaScript es un lenguaje de programación orientado a objetos o no, pero es indiscutible que es una herramienta excelente para el desarrollo de aplicaciones que trabajen con trabajar con clases y objetos.
Clases y Objetos
Para entender la programacion orientada a objetos debemos primero entender lo que es una clase, pero primero diremos que un objeto es un conjunto de atributos y metodos agrupados.
Una clase es un grupo de objetos que comparten los mismos atributos y métodos, veamos como podemos crear una clase llamada popup, como observareis no hay ninguna diferéncia con una funcion solo que al crearlo usamos new:
<script language="javascript">
// Creamos la clase
function popup ( ) {
// ...
}
ventana = new popup ();
</script>
Los atributos
La clase que acabamos de crear tendrá sus atributos, que podrán ser publicos (accesibles desde fuera del objeto) o privados (solo accesibles desde el código del objeto).
Vamos a añadir un atributo público a la clase que hemos creado para indicar la URL del popup:
<script language="javascript">
// Creamos la clase
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// ...
}
ventana = new popup ();
</script>
Y le añadimos también una clase privada para almacenar el objeto window de la ventana abierta.
<script language="javascript">
// Creamos la clase
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// Atributo privado para el objeto window
var ventana = null;
// ...
}
ventana = new popup ();
ventana.url = 'http://www.taringa.net/';
</script>
Los métodos
Al crear un objeto de tipo imagen se ejecutará el metodo constructor de la imagen que será en el caso de nuestro ejemplo la funcion popup, cuando se ejecuta, este crea el objeto y todas sus variables (atributos) y funciones (metodos).
En el interior de esta función constructor, podemos crear nuevas funciones públicas y privadas que a su vez, podrían ser constructor de un objeto 'hijo', vamos a completar el ejemplo anterior añadiendo un par de metodos.
<script language="javascript">
function popup ( ) {
// Atributo público inicializado a about:blank
this.url = 'about:blank';
// Atributo privado para el objeto window
var ventana = null;
// Metodo público para abrir el popup
this.abrir = function ( ) {
// Generamos la ventana
ventana = window.open ( this.url );
// Si no hay ventana llamamos al error
if ( ! ventana ) error ( 'El popup ha sido bloqueado' );
}
// Metodo privado para alertar un mensaje en caso de error
var error = function ( texto ) {
// Mostramos el error
alert ( texto );
}
}
ventana = new popup ();
ventana.url = 'http://www.taringa.net/';
ventana.abrir ();
</script>
La visibilidad de los elementos
Los elementos de un objeto ( metodos y clases ) són accesibles desde el exterior del mismo objeto cuando los creamos con this. tal y como hemos observado en el ejemplo con url y abrir:
<script language="JavaScript">
// ...
ventana.url = 'http://www.taringa.net/';
ventana.abrir ();
</script>
Por otro lado tambien hemos creado los objetos ventana y error, pero al crearlos con var solo serán accesibles desde el interior de la clase y sus subclases y funciones:
<script language="JavaScript">
// ...
ventana.url = 'http://www.taringa.net/';
// Llamamos a un metodo privado
// Error: ventana.error is not a function
ventana.error ( 'Hola amigo' );
</script>