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: Se accede a una propiedad usando el nombre del objeto seguido de un punto y el nombre de la propiedad. Ejemplo:
coche.marca
. - Notación de corchetes: Se accede a una propiedad usando el nombre del objeto seguido de corchetes con el nombre de la propiedad entre comillas. Ejemplo:
coche['modelo']
.
// 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.