Los objetos en programación son estructuras de datos que permiten almacenar información de una manera organizada. Funcionan con una estructura de clave-valor, donde cada clave (key) se asocia a un valor (value), lo que nos ayuda a mantener una colección de datos relacionados de forma coherente.
Los objetos no solo almacenan datos, también pueden contener métodos que son acciones ejecutables por el propio objeto. Esta capacidad para almacenar tanto datos como comportamientos hace que los objetos sean herramientas versátiles y poderosas en muchos lenguajes de programación.
¿Cómo crear un objeto en JavaScript?
Crear un objeto en JavaScript comienza declarando una constante y usando llaves para definir las propiedades y métodos dentro del objeto. Aquí te muestro cómo:
const persona ={nombre:'John',edad:30,direccion:{calle:'Avenida Insurgentes',numero:187,ciudad:'Ciudad de México'},saludar:function(){console.log(`Hola, mi nombre es ${this.nombre}`);}};
En este ejemplo, hemos creado un objeto llamado persona con propiedades como nombre, edad y direccion. Además, el método saludar imprime un mensaje utilizando la propiedad nombre.
¿Cómo trabajar con métodos de objetos?
Los métodos en un objeto se crean como funciones dentro del mismo. Estos métodos permiten que el objeto realice acciones usando sus propias propiedades.
Para ejecutar el método saludar del objeto persona, simplemente llamamos:
persona.saludar();// Imprime: Hola, mi nombre es John
Este código ejecuta la acción definida en el método saludar, mostrando el saludo con el nombre de la persona.
¿Cómo agregar y borrar propiedades y métodos?
Agregar propiedades y métodos
Agregar nuevas propiedades o métodos a un objeto existente es sencillo. Solo necesitas utilizar el operador de punto (.) seguido del nombre de la nueva propiedad o método:
Para eliminar una propiedad o método de un objeto, utiliza la palabra clave delete:
delete persona.telefono;delete persona.despedir;
Con esto, las propiedades o métodos se eliminan del objeto, y ya no estarán accesibles.
Los objetos son fundamentales en muchos paradigmas de programación, especialmente en paradigmas orientados a objetos. Te permiten crear modelos del mundo real en el código, manejando tanto datos como funcionalidades. Recuerda que como programador, el dominio de los objetos y sus manipulaciones abre la puerta a desarrollar aplicaciones más completas y robustas. ¡Sigue explorando y experimentando para fortalecer tus habilidades!
Accedemos a las propieades o métodos de un objeto usando el caracter ., es decir: miObjeto.unaPropiedad o miObjeto.unMetodo()
Para añadir propiedades o métodos a un objeto ya existente podemos definir su valor como lo haríamos con otras variables, es decir: miObjeto.nuevaPropiedad = 7! Podemos usar esta misma sintaxis para redefinir propiedades ya existentes dentro del obejto
Para eliminar una propiedad usamos al sentencia delete, por ejemplo si quiero eliminar la propiedad age de mi objeto user, la sintaxis a usar sería delete user.age
👀🚧 OJO, no podemos borrar métodos con la sentencia deletepero si podemos asignar el valor undefined a los métodos que ya no queremos usar
📃 Aquí encuentras la documentación del tema de objetos
Estuve leyendo la documentacion que dejaste. Dice que si se puede usar el operador delete para eliminar propiedades de valor y metodo de un objeto. No es un metodo, ya que no es una funcion directa de los objetos y no se llama como los metodos que conocemos.
Lo curioso es que si lo haces con node archivo.js en la consola, es como dices el telefono no se muestra en el objeto, pero si no lo corres en el navegador, el telefono si se muesetra.
Creo que tiene que ver con algo que llaman hoisting
Chicos tengo una duda. ¿En este momento ya podemos acceder a las propiedades de un objeto js tanto con this como con el nombre del objeto, dentro de sus mismas funciones? Lo digo porque la profe en una clase anterior nos indicó que no se podía, pero a mi si me esta dejando con ambas opciones.
Hola, es un poco más complejo que esta breve explicación, pero en simples palabras, la dirección en la memoria hacia el Objeto persona que estamos declarando permanecerá constante, es decir, persona será siempre ese Objeto. No podemos de repente decidir que ahora persona será un string o un valor booleano. Sin embargo las propiedades y valores dentro del Objeto sí pueden cambiar por diferentes procesos.
Suelo compararlo con esta analogía para entenderlo: Si inicio el Objeto Diego, este** siempre será Diego, eso permanece constante. Pero la propiedad camisa de Diego, o su método prepararDesayuno sí pueden cambiar.
Aún soy principiante también y mi explicación pudiera ser imprecisa, pero espero que sea de ayuda y estoy abierto a cualquier corrección.
En JavaScript, la coma (,) se utiliza para separar elementos en listas, como en arrays, o para separar propiedades en objetos. Por ejemplo:
const persona ={nombre:"John",edad:30,ciudad:"México"};
El punto y coma (;) se usa para finalizar instrucciones. Es opcional en muchos casos, pero es una buena práctica incluirlo para evitar errores, especialmente en líneas que contienen múltiples instrucciones. Por ejemplo:
let x =10;let y =20;let z = x + y;
Usar ambos correctamente ayuda a mantener el código claro y libre de errores.
puedes hacerlo con un html y ligar el js para abirlo en navegador o la otra es como la profesora, en la terminar poner node nombredetuarchivo.js y va a pintar la info sin tener que abrir un navegador.
Agregar 'teléfono' de forma separada permite hacerlo dinámicamente después de crear el objeto, útil si la información es obtenida o generada posteriormente.
constUser={userName:"Mariano",userAge:19,userEmail:"marianiorogers13579@gmail.com",phoneNumber:3167363546,UserAddress:{StreetName:"1243 WhisperyWood 45th",city:"Cleveland",state:"OH",ZIP:45746},UserStatus:true,greet(){console.log(`Hello ppl, My Name is ${User.userName} \nI am ${this.userAge} and I live ${this.UserAddress.city}`);},};console.log(User);console.log("\n");console.log(User.userName);console.log("\n");User.greet();User.BloodType="A+";User.phoneNumber=31656890345;User.Leave=()=>{console.log(`${User.userName} says GoodBye to You. \n`);}console.log(User.BloodType);console.log(User.phoneNumber);User.Leave();```const User = {
  userName : "Mariano", userAge : 19 , userEmail : "marianiorogers13579@gmail.com", phoneNumber : 3167363546,
  UserAddress : { StreetName : "1243 WhisperyWood 45th", city : "Cleveland", state : "OH", ZIP : 45746 }, UserStatus : true ,
  greet () {
  console.log(`Hello ppl,MyName is ${User.userName} \nI am ${this.userAge} and I live ${this.UserAddress.city}`); },
};
console.log(User);
console.log("\n");
console.log(User.userName);
console.log("\n");
User.greet();
User.BloodType = "A+";User.phoneNumber = 31656890345 ;
User.Leave = () => {
  console.log(`${User.userName} says GoodBye to You. \n`);}console.log(User.BloodType);console.log(User.phoneNumber);User.Leave();
Para los que tengan curiosidad de saber cómo funciona este ejercicio con typescript, su implementación y el tiempo en que se ejecuta cada comando depende del tipado. Quedaría algo así:
// correr con ts-node anatomia.tsinterfacePersonaBase{nombre: string;edad: number;direccion:{calle: string;ciudad: string;};saludar():void;}interfacePersonaExtensibleextendsPersonaBase{[key: string]: any;}constpersona:PersonaExtensible={nombre:'Sarah',edad:23,direccion:{calle:'Avenida Siempre Viva',ciudad:'CDMX',},saludar(){console.log(`hola, mi nombre es ${persona.nombre}`);},};console.log(persona);/*
{
nombre: 'Sarah',
edad: 23,
direccion: { calle: 'Avenida Siempre Viva', ciudad: 'CDMX' },
saludar: [Function: saludar]
}
*/persona.saludar();persona.telefono='55-5555-5555';persona.estadoCivil='soltera y feliz';console.log(persona);/*
{
nombre: 'Sarah',
edad: 23,
direccion: { calle: 'Avenida Siempre Viva', ciudad: 'CDMX' },
saludar: [Function: saludar],
telefono: '55-5555-5555',
estadoCivil: 'soltera y feliz'
}
*/console.log(persona.telefono);persona.despedir=()=>{console.log(`Un gusto y hasta luego`);};console.log(persona);/*
{
nombre: 'Sarah',
edad: 23,
direccion: { calle: 'Avenida Siempre Viva', ciudad: 'CDMX' },
saludar: [Function: saludar],
telefono: '55-5555-5555',
estadoCivil: 'soltera y feliz',
despedir: [Function (anonymous)]
}
*/persona.despedir();// Un gusto y hasta luegodelete persona.telefono;console.log(persona);/*
{
nombre: 'Sarah',
edad: 23,
direccion: { calle: 'Avenida Siempre Viva', ciudad: 'CDMX' },
saludar: [Function: saludar],
estadoCivil: 'soltera y feliz',
despedir: [Function (anonymous)]
}
*/// delete persona.saludar //esto no es posible eliminar en ts ya que la propiedad a elminar debe ser opcionaldelete persona.despedir;console.log(persona);/*
{
nombre: 'Sarah',
edad: 23,
direccion: { calle: 'Avenida Siempre Viva', ciudad: 'CDMX' },
saludar: [Function: saludar],
estadoCivil: 'soltera y feliz'
}
*/