viernes, 14 de agosto de 2015

Objetos en Javascript

Los tipos de datos más simples que maneja Javascript son: numbers, strings, booleans (true o false), null y undefined. Numbers, strings y booleans son como objetos porque tienen métodos, pero estos son inmutables, es decir, no se pueden modificar una vez estos han sido creados.

En Javascript los arreglos son objetos, las funciones son objetos, las expresiones regulares son objetos, y ni hablar de los mismos objetos. Los objetos son caracteristicos por tener propiedades binarias, es decir, <nombre/valor>.


Objetos Literales

Los objetos literales son caracteristicos porque poseen una notación muy particular, se trata de un par de llaves las cuales envuelven las propiedades binarias <nombre/valor>:


// objeto literal vacio
var Persona = {};

//objeto literal con propiedades
var Persona ={
  nombre: "",
  "primer-apellido": "",
  segundo_apellido: "",
  edad: 30,
  sexo: ''
}; 

El nombre de la propiedad del objeto puede ser cualquier cosa. En el objeto Persona hay propiedades que estan entre comillas dobles y otras que no, el uso de comillas dobles para la declaración de las propiedades no es obligatorio y si no se quiere aplicar no deberia ser ningun problema, pero para propiedades como primer-apellido el cual contiene un guión en la mitad, Javascript no lo reconoce como una sola palabra, por lo cual muestra un error si se usara de tal manera, si se desea usar de tal forma se debe rodear el nombre de la propiedad entre comillas, para agregar varias palabras a una propiedad se recomienda usar un guión bajo para que no presente ningun problema como por ejemplo segundo_apellido, omitiendo asi el uso de comillas.

Para acceder a la información almacenada en las propiedades del objeto normalmente se emplean dos notaciones: corchetes "[propiedad]" y  punto ".", la notación "." es la preferida y más común debido a que es mas compacta y legible:


//Actualizar los valores de las propiedades
Persona.nombre = "juan"
Persona["primer-apellido"]  = "perez"
Persona.segundo_apellido = "real"
Persona.edad = 30

//acceso a propiedades de un objeto
Persona.nombre              //juan
Persona["primer-apellido"]  //perez
Persona.segundo_apellido    //real
Persona.edad                // 30


Objetos Función

Las funciones en javascript son objetos, los objetos función estan enlazados a function.prototype, la cual es una propiedad que esta incluida en cada objeto función creado cuyo valor es un objeto con una propiedad constructor en donde el valor de este es la función.


Los objetos función se crean mediante funciones literales:


//Declaración de la clase Persona
var Persona = function(){
   this.nombre = "juan";
   this.primer_apellido = "perez";
   this.segundo_apellido = "real";
   this.edad = 30;
};


//Instanciación del objeto persona
 var persona = new Persona();

//acceso a los atributos
persona.nombre               //juan
persona.primer_apellido      //perez
persona["segundo_apellido"]  //real
persona["edad"]              //30