Aquellos que lean este post aprenderán una o dos cosas (si es que no las sabían ya sobre javascript y como podemos hacer uso de objetos instanciables).

Antes que nada es bueno hacer algunas aclaraciones sobre javascript que podrían llevarlos a confusiones, y vergüenzas horrorosas a la hora de discutirlo con sus colegas:

  1. Javascript es un lenguaje que no usa clases (class-less): en javascript todo es un objeto, el cual podemos instanciar y modificar de la misma forma como si fuera una clase.
  2. La Herencia existe: pero de otra forma, los objetos heredan objetos y no las clases de clases como en los lenguajes “class”-icos

Bueno habiendo dicho eso, vamos al grano, como todo en este blog:

1. Usando una función

Esta es probablemente la forma mas común de lograrlo, básicamente creamos un objeto utilizando la palabra clave new. Internamente definimos los métodos normalmente pero utilizando la palabra clave this

Como por ejemplo:

function Persona(nombre_propio){
   this.nombre = nombre_propio;
   this.edad = 32;
   this.getEdad = function() { 
       return this.edad;
   }
}

Adicionalmente y de una forma mas eficiente aun también podemos agregar métodos al prototipo (prototype) de la siguiente forma:

Persona.prototype.getEdad = function() {
    return this.edad;
};

De este modo podemos crear y modificar el objeto como normalmente lo haríamos con una clase (recuerden que no es realmente una clase, es una simulación de clase).

var una_persona = new Persona("Juan Perez");
var edad_default = una_persona.getEdad();
console.log(edad_default); // 32

bastante simple no? 😉 veamos la siguiente.

2. Usando Literales de Objetos

Los literales son formas cortas de crear objetos en javascript, así:

Objeto Forma Normal Literal
Objeto var a = new Object(); var a = {};
Arreglo var b = new Array(); var a = [];

Entonces con esto podemos usar una forma corta de usar clases en lugar de la simulación en la forma #1 de este post. Para efectos de ello la “clase” se deine asi:

var Persona = {
  nombre: "Juan Perez",
  edad: 34,
  getEdad: function(){
              return this.edad;
           }
};

En este caso no necesitamos (y no podemos) crear una instancia de la clase con la palabra clave new porque resulta que el objeto ya esta creado, entonces lo utilizamos de manera sencilla y rápida.

Persona.nombre = "Pedro Navaja";
Persona.edad = 35;
console.log(Persona.getEdad() ); //35

Los literales son geniales! pero solo los podemos “instanciar” una vez, es decir una vez creado el objeto solamente podemos ir modificandolo, por esto mismo la forma 1 a veces se hace necesaria.

3. Usando Literales De Objetos Con Función

Esta es una combinación de los dos anteriores, la forma de usarse es como la segunda pero tiene también de la primera la función que engloba todo. La sintaxis es la siguiente:

var Persona = new function(){
  nombre: "Juan Perez",
  edad: 34,
  getEdad: function(){
              return this.edad;
           }
};

La forma de uso es la misma que en la forma 2, si correcto… Pero! el definir una función hace dos cosas al mismo tiempo: Crea una función anónima con un constructor y la invoca con la palabra clave new, recuerden que en cuanto a javascript se refiere, siempre hay mas de una forma “correcta” de hacer las cosas, lo que lo convierte en un lenguaje de scripting tan cool y tan usado mundialmente.

Espero que hayan encontrado este post de utilidad.

Categorized in: