Objetos en JavaScript

< Anterior Siguiente >

En JavaScript, los objetos son una forma de almacenar datos y funcionalidades en una sola entidad. Un objeto es una colección de propiedades, donde cada propiedad es una asociación entre un nombre (clave) y un valor. El valor de una propiedad puede ser cualquier tipo de dato, incluyendo otro objeto o una función (método).

Creación de un objeto

Existen varias formas de crear objetos en JavaScript. Aquí se presentan las formas más comunes:

1. Usando literales de objeto

La forma más directa de crear un objeto es utilizando la notación de literales de objeto:

 
let coche = {
    marca: 'Toyota',
    modelo: 'Corolla',
    año: 2021,
    encender: function() {
        console.log('El coche está encendido.');
    }
};
        

En el ejemplo anterior, coche es un objeto con tres propiedades: marca, modelo, año, y un método encender que imprime un mensaje en la consola.

2. Usando el constructor de objetos

Otra forma de crear un objeto es utilizando el constructor new Object():

let persona = new Object();
persona.nombre = 'Carlos';
persona.edad = 28;
persona.saludar = function() {
    console.log('Hola, soy ' + this.nombre);
};
        

En este ejemplo, persona se crea como un objeto vacío y luego se le añaden propiedades y un método.

Propiedades y métodos

Las propiedades de un objeto son valores asociados a ese objeto. Los métodos son funciones que se definen como propiedades del objeto y que pueden operar sobre sus propiedades.

En el objeto coche, las propiedades son marca, modelo y año. El método encender() realiza una acción específica sobre el objeto.

Acceso a las propiedades

Para acceder a las propiedades de un objeto, puedes usar dos métodos:

// Notación de punto
console.log(coche.marca);  // Output: Toyota

// Notación de corchetes
console.log(coche['modelo']);  // Output: Corolla
        

Agregar y modificar propiedades

Puedes agregar nuevas propiedades a un objeto o modificar las existentes:

// Agregar una nueva propiedad
coche.color = 'Rojo';

// Modificar una propiedad existente
coche.año = 2022;

console.log(coche);
        

En el ejemplo, se añade una propiedad color y se modifica la propiedad año del objeto coche.

Eliminar propiedades de un objeto

Para eliminar una propiedad de un objeto, se utiliza el operador delete:

delete coche.color;
console.log(coche);
        

El operador delete elimina la propiedad color del objeto coche.

Métodos de objetos

Un método es una función asociada a un objeto. Los métodos permiten que el objeto realice acciones usando sus propiedades:

coche.encender();  // Output: El coche está encendido.
        

El método encender() del objeto coche se llama para imprimir un mensaje en la consola.

Iterar sobre propiedades de un objeto

Para recorrer todas las propiedades de un objeto, se puede usar un bucle for...in:

for (let propiedad in coche) {
    console.log(propiedad + ': ' + coche[propiedad]);
}
        

Este bucle itera sobre cada propiedad del objeto coche y muestra el nombre y el valor de cada propiedad en la consola.

Herencia en objetos

JavaScript utiliza un sistema de herencia basado en prototipos. Los objetos pueden heredar propiedades y métodos de otros objetos:

function Animal(nombre, sonido) {
    this.nombre = nombre;
    this.sonido = sonido;
}

Animal.prototype.hacerSonido = function() {
    console.log(this.nombre + ' hace ' + this.sonido);
};

let perro = new Animal('Perro', 'ladrido');
perro.hacerSonido();  // Output: Perro hace ladrido
        

En este ejemplo, la función constructora Animal tiene un método en su prototipo llamado hacerSonido(). Los objetos creados con Animal pueden utilizar este método.

Objetos anidados

Un objeto puede contener otros objetos como propiedades. Esto es útil para estructurar datos jerárquicos:

let estudiante = {
    nombre: 'Ana',
    edad: 22,
    curso: {
        nombre: 'Matemáticas',
        duracion: '3 meses'
    }
};

console.log(estudiante.curso.nombre);  // Output: Matemáticas
        

En este ejemplo, el objeto estudiante tiene una propiedad curso que a su vez es un objeto con sus propias propiedades.

Clases y objetos

Desde ECMAScript 6, se pueden usar clases para crear objetos. Las clases proporcionan una sintaxis más clara para definir objetos y manejar la herencia:

class Persona {
    constructor(nombre, edad) {
        this.nombre = nombre;
        this.edad = edad;
    }

    saludar() {
        console.log('Hola, me llamo ' + this.nombre);
    }
}

let juan = new Persona('Juan', 35);
juan.saludar();  // Output: Hola, me llamo Juan
        

En este ejemplo, la clase Persona define un constructor y un método. La instancia juan utiliza estos elementos.

Uso del método Object.assign()

El método Object.assign() se utiliza para copiar las propiedades de uno o más objetos fuente a un objeto destino. Esto puede ser útil para combinar objetos:

let objetoDestino = { a: 1, b: 2 };
let objetoFuente = { b: 4, c: 5 };

Object.assign(objetoDestino, objetoFuente);

console.log(objetoDestino);  // Output: { a: 1, b: 4, c: 5 }
        

En el ejemplo, las propiedades del objeto objetoFuente sobrescriben las del objeto objetoDestino.

Comprobación de propiedades

Para verificar si un objeto tiene una propiedad específica, se pueden utilizar el operador in o el método hasOwnProperty():

console.log('marca' in coche);  // Output: true
console.log(coche.hasOwnProperty('modelo'));  // Output: true
        

El operador in devuelve true si la propiedad existe en el objeto o en su cadena de prototipos. El método hasOwnProperty() devuelve true solo si la propiedad es propia del objeto.