Definición de objetos en JavaScript

Definición de objetos en JavaScript

Definición de objetos en JavaScript

En este tutorial aprenderemos cómo definir objetos, así como definir sus propiedades y funciones en JavaScript.

Objetos definidos por el usuario

La forma más simple es instanciar un objeto de tipo Object y agregarle propiedades dinámicamente

var coche1 = new Object();
coche1.marca = "Seat";
coche1.modelo ="Leon";
cocne1.color ="Negro";

Estas propiedades sólo se agregan al objeto en cuestión, y si instanciamos nuevos objetos no tendrán estas propiedades

//Instanciamos el objeto
var coche1 = new Object();
//Declaramos la propiedad marca
coche.marca = "Seat";
//Instanciamos otro objeto
var coche2 = new Object();
//Podemos acceder a la propiedad marca de coche1
alert(coche1.marca); //El resultado es Seat
//Pero el objeto coche2 no tiene la propiedad marca
alert(coche2.marca); //El resultado es undefined

También podemos darle valor a las propiedades con corchetes, como si se tratara de un Array asociativo

coche1["marca"] = "Seat";
coche1["modelo"] = "Leon";
coche1["color"] = "Negro";

Objetos en JavaScript

En JavaScript casi todo es un objeto o se trata como tal, podemos crear objetos usando un inicializador de objeto, con la notación literal

var objeto = { 
    propiedad1 :    valor, //propiedad1 puede ser un identificador
    2          :    valor, //también puede ser un número
    "propiedad n" : valor, //y también una cadena
}

Ejemplo

//Creación del objeto de forma literal
var persona = {nombre: "Isaac", edad: 28};
//Podemos acceder a sus propiedades
alert(persona.nombre);
//Y modificarlas
persona.nombre = "Isaac Peral";

Creación de objetos usando el constructor

function Coche(marca,modelo,color) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
}

Crear instancias de un objeto

var coche1 = new Coche("Seat","Leon","Negro");
var coche2 = new Coche("Ford","Fiesta","Blanco")

Una propiedad de un objeto puede ser al mismo tiempo un objeto

Veamos un ejemplo

//Creación de un objeto Conductor
function Conductor(nombre,telefono) {
    this.nombre = nombre;
    this.telefono = telefono;
}
//Instanciamos un objeto de tipo Conductor
conductor1 = new Conductor("Juan","5454545454");
//Creamos el objeto Coche incluyendo la propiedad conductor, 
//que será un objeto de tipo Conductor
function Coche(marca,modelo,color,conductor) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
    this.conductor = conductor;
}
//Al instanciar un nuevo objeto de tipo Coche incluimos un conductor
var coche1 = new Coche("Seat","Leon","Negro",conductor1)

Acceder a las propiedades de un objeto

//coche1.marca
//coche1.color
alert("El color de coche1 es: "+coche1.color);

Podemos incluir una propiedad nueva en un objeto sin tener que volver a crearlo

coche1.tipo = "turismo";

Definición de funciones o métodos asociados a un objeto

Podemos crear primero el método y despues asociarlo al objeto de este modo

//Creamos el método cambiar color
function cambiarColor(nuevoColor) {
    this.color = nuevoColor;
}
//Lo incluimos en la definición del objeto
function Coche(marca,modelo,color,conductor) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
    this.conductor = conductor;
    this.cambiarColor = cambiarColor;
}

Llamamos al método cambiar color de este modo

coche1.cambiarColor("Azul");

Podemos crear métodos en la definición del objeto de este modo

function Coche(marca,modelo,color,conductor) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
    //Definición del método cambiarColor
    this.cambiarColor = function(nuevoColor) {
        this.color = nuevoColor;
    }
}

Definir objeto en su prototype

function Coche(marca,modelo,color,conductor) {
    this.marca = marca;
    this.modelo = modelo;
    this.color = color;
    //Definición del método cambiarColor
    Coche.prototype.cambiarColor = function(nuevoColor) {
        this.color = nuevoColor;
    }
}

Cuando definimos el método dentro del constructor, cada vez que se instancia un nuevo objeto se crea un nuevo objeto de tipo función. De modo que si creamos tres instancias del objeto Coche se cargarán en memoria 3 métodos cambiaColor que hacen lo mismo.

Si por el contrario definimos el método en el prototype , el objeto de tipo función se creará sólo una vez y todas las instancias de tipo Coche apuntarán a él, consumiendo menos memoria.

Si te ha gustado no olvides compartir en redes sociales.

Espero que te haya servido. Cualquier duda deja un comentario. Un saludo

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Translate »
Ir a la barra de herramientas