Objetos y sus métodos

logo_programacion

En JavaScript, un objeto es una estructura de datos que puede contener propiedades y métodos. Una propiedad es una asociación entre un nombre (una clave) y un valor, mientras que un método es una función asociada al objeto. Los objetos permiten organizar y manipular datos de manera estructurada y eficiente.

Creación de Objetos

Sintaxis de Objeto Literal

La forma más sencilla de crear un objeto es utilizando la sintaxis de objeto literal:

let persona = {
    nombre: "Juan",
    edad: 30,
    saludar: function() {
        console.log("Hola, me llamo " + this.nombre);
    }
};

Uso del Constructor Object

Otra manera de crear objetos es utilizando el constructor Object:

let persona = new Object();
persona.nombre = "Juan";
persona.edad = 30;
persona.saludar = function() {
    console.log("Hola, me llamo " + this.nombre);
};

Constructores Personalizados

También puedes crear funciones constructoras para crear múltiples objetos del mismo tipo:

function Persona(nombre, edad) {
    this.nombre = nombre;
    this.edad = edad;
    this.saludar = function() {
        console.log("Hola, me llamo " + this.nombre);
    };
}

let juan = new Persona("Juan", 30);
let maria = new Persona("María", 25);

Propiedades de los Objetos

Las propiedades de un objeto son variables que están ligadas al objeto. Puedes acceder a las propiedades usando la notación de punto o la notación de corchetes.

Acceso a las Propiedades

let nombre = persona.nombre;  Notación de punto
let edad = persona["edad"]; /* Notación de corchetes */

Modificación de las Propiedades

persona.nombre = "Carlos"; /* Notación de punto */
persona["edad"] = 35; /* Notación de corchetes */

Propiedades Calculadas

Desde ES6, es posible utilizar propiedades calculadas en objetos:

let propiedad = "nombre";
let persona = {
    [propiedad]: "Juan"
};
console.log(persona.nombre); /* "Juan" */

Métodos en los Objetos

Los métodos son funciones que pertenecen a un objeto. Se definen de la misma manera que las propiedades, pero su valor es una función.

Definición y Uso de Métodos

let persona = {
    nombre: "Juan",
    saludar: function() {
        console.log("Hola, me llamo " + this.nombre);
    }
};

persona.saludar(); /* "Hola, me llamo Juan" */

Métodos Acortados (ES6)

A partir de ES6, es posible definir métodos de una manera más concisa:

let persona = {
    nombre: "Juan",
    saludar() {
        console.log("Hola, me llamo " + this.nombre);
    }
};

persona.saludar(); /* "Hola, me llamo Juan" */

Métodos Comunes de los Objetos

  • Object.keys()

    Devuelve un array con los nombres de las propiedades de un objeto:

    let keys = Object.keys(persona);
    console.log(keys); /* ["nombre", "saludar"] */
    
  • Object.values()

    Devuelve un array con los valores de las propiedades de un objeto:

    let values = Object.values(persona);
    console.log(values); /* ["Juan", function saludar() { ... }] */
    
  • Object.entries()

    Devuelve un array de arrays, donde cada sub-array es un par clave-valor de las propiedades del objeto:

    let entries = Object.entries(persona);
    console.log(entries); /* [["nombre", "Juan"], ["saludar", function saludar() { ... }]] */
    
  • Object.assign()

    Copia las propiedades de uno o más objetos a un objeto destino:

    let destino = {};
    let fuente = {a: 1, b: 2};
    Object.assign(destino, fuente);
    console.log(destino); /* {a: 1, b: 2} */
    
  • Object.freeze()

    Congela un objeto, impidiendo que se añadan, eliminen o modifiquen sus propiedades:

    let obj = {prop: 42};
    Object.freeze(obj);
    obj.prop = 33; /* No tiene efecto */
    console.log(obj.prop); /* 42 */
    
    
  • Object.seal()

    Sella un objeto, permitiendo modificar las propiedades existentes, pero impidiendo añadir o eliminar propiedades:

    let obj = {prop: 42};
    Object.seal(obj);
    obj.prop = 33; /* Modificación permitida */
    delete obj.prop; /* No tiene efecto */
    console.log(obj.prop); /* 33 */
    

Conclusión

Los objetos son una parte fundamental de JavaScript y proporcionan una manera flexible de organizar y manipular datos. Comprender cómo crear y usar objetos y sus métodos es esencial para desarrollar aplicaciones efectivas en JavaScript.