Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JavaScript NO es un lenguaje Orientado a Objetos, es en realidad el nico lenguaje de programacin basado en herencia de prototipos. A pesar que encontramos el uso de los operadores new y this entro de cdigos JavaScript, estos operadores no hacen exactamente lo mismo que en los lenguajes orientados a objetos.
New: genera instancia del objeto referido aunque la instancia puede ser extendida en el futuro mediante el uso de prototype.
Estos operadores actan como una fachada que hace parecer el lenguaje como orientado a objetos, aun cuando su funcionamiento es diferente al de los lenguajes orientados a objetos a objetos tradicionales.
CLASES VS PROTOTIPOS
Como ya se menciono, JS es basado en prototipos. Un prototipos es un objeto abstracto, capaz de contener otros objetos dentro, los cuales pueden ser distintos tipos de datos: variables (nmeros, cadenas de texto, valores lgicos), vectores, funciones e inclusive otros grupos de objetos.
Entonces, en vez de programar una clase, para estar orientados a objetos en JS definimos un prototipo. Las variables dentro de este sern las propiedades, y las funciones sern los mtodos:
Entonces, iniciemos la creacin del objeto: La creacin de un objeto se hace con una funcin, que ser la constructora, y a la vez la que identifique el objeto. Hay dos formas de definir la funcion constructora: Definir una funcion o definir una variable cuyo contenido sea una funcin. Puede parecer redundante, lo es. Veamos ambas formas:
Como vimos anteriormente, las propiedades del objeto se definen en forma de variables. Estas variables deben estar situadas dentro de la funcin constructora, marcadas con "this", para poder ser acezadas como parte del objeto. Las variables reciben parmetros que se envan al crear una nueva instancia del objeto. Un gato tiene como propiedades bsicas... digamos que su nombre, su color, y su edad. Entonces estas propiedades sern las que reciba la funcion constructora para ser asignadas, Veamos como:
METODOS
Ahora, veamos los mtodos del objeto. Como mencion arriba, un mtodo es una funcin dentro del objeto. Hay varios mtodos para crear un mtodo nuevo: Extendiendo el prototipo, creando una variable tipo funcin, o vinculando una funcin externa al objeto. Veamos todos los casos, y de paso creemos un par de "acciones" para nuestro gato. Mtodo 1: Vinculacin externa
Con este metodo declaramos que una de las propiedades, llamar a una funcion externa:
Mtodo 2: Extensin del prototipo Como los objetos estn compuestos por prototipos en JavaScript, nosotros podemos aumentarle mtodos al prototipo del objeto directamente, de la siguiente manera:
Con este mtodo, asignamos una propiedad como funcin dentro de la constructora:
HERENCIA
Uno de las caracteristicas ms interesante de la OOP, es la herencia de mtodos / propiedades. En JavaScript lo podemos lograr mediante los prototipos. Entonces, ya tenemos un Gato, verdad? Ahora, creemos una raza de gatos, la raza Siams. Entonces creemos dos constructoras apartes para cada una, y hagamos que siams herede de gato: