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 acabo de probar en consola y delete si elimina un metodo.
Es molesto que no este estructurada la forma de probar el codigo. Este chico usa una extension para correlo en el navegador y la chica usa node desde terminal. Para darle seriedad al curso, deberían hacerlo todo de una forma estandarizada
Hola, este codigo también lo puedes probar en la terminal haciendo uso de node, no te genera ningún problema.
Me parece mejor así, ya que aprendes dos formas de probar el código, y justamente en esta clase se nota algo curioso al probar de las dos maneras
Lo curioso es que si lo haces con node archivo.js en la consola, las propiedades no se agregan porque el console.log de persona se hizo antes de agregar las propiedades, pero, en el navegador si.
como dato curioso
recuerden que es en forma de cascada como se lee el codigo , si ponen -- persona.telefono = "222-222-2222";
--despues del console.log no lo leera, tiene que ser antes
algo asi :
persona.telefono = "222-222-2222";
console.log(persona);
persona.saludar();
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.
De ambas maneras me lo está permitiendo
Si lo dijo pero se referia a las arrow functions
es decir a las funciones que van ()=>
Ya que las arrow functions no cuentan con el contexto this
Yo tengo la duda, Por qué el objeto persona lo declaraste como constante siendo que estas no pueden ser alteradas despues de inicializarla?
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.
creo que ese ejemplo está bastante bien
Esta classe es repetida a la anterior
Solo el inicio
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.
gracias por la info
My tiny shared code snippet .[bellow]\n
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();
Trabajando con objetos en JavaScript
Agregar una Propiedad
Agrega una nueva propiedad telefono al objeto persona.
Los objetos en JavaScript son estructuras que permiten almacenar datos y funcionalidades. Algunos casos de uso son:
Modelar entidades: Representar objetos del mundo real, como usuarios o productos.
Organizar datos: Agrupar información relacionada para un acceso más fácil.
Métodos: Incluir funciones que operan sobre los datos del objeto, facilitando la lógica de negocio.
Prototipos: Permiten la herencia y reutilización de código, optimizando la creación de objetos similares.
Estos conceptos son fundamentales en la Programación Orientada a Objetos, que estás aprendiendo en el curso de Fundamentos de JavaScript.
perdón, como hace que con solo guardar se ejecuta el código al otro lado?
El archivo está ligado a un index.html a través del tag <script src=> </script>. Después, abre la consola del navegador.
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.
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'
}
*/
mi humilde aporte juntando metodos y propiedades
Soy yo o esta clase está repetida?
tengo una duda, para que agregar "telefono" de forma separada si se puede agregar en la misma linea de codigo de los datos de Persona?
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.
Para esta sección del curso es indispensable primero tomar un curso de fundamentos de Programación Orientada a Objetos
Cuando usas delete persona.despedir, se elimina la referencia al método despedir en el objeto persona. Sin embargo, si antes de eliminarlo, ya habías invocado persona.despedir(), el mensaje "Adiós" se habrá mostrado en ese momento. Por lo tanto, el método solo se eliminará para futuras invocaciones después de la eliminación. Esto significa que cualquier llamada al método antes de su eliminación seguirá mostrando el mensaje correspondiente.