Quiero conseguir que cuando, en la función autoejectuable, escriba NATALIA, salga"los padres de NATALIA…" y no se como lograr la fórmula o el método para conseguir mostrar la ${a} para que muestre el nombre que ingresas en la funcion para saber los padres
const NATALIA = {
padre: "Juan",
madre: "Paloma",
hermano: "Jose Miguel"
};
const EMILIO = {
padre: "Mariano",
madre: "Desconocida",
};
const ALEX = {
padre: "Andres",
madre: "Isabel",
hermano: "Pablo"
};
try{
((a)=>
console.log(`2: Los padres de ${a} se llaman: ${a.madre} y ${a.padre}.`)
)(NATALIA);
console.log(a);
}
catch(err){
if(err === ReferenceError){
console.log(`Perdone las molestias. Ha habido un error de tipo ${err.name}`);
} else {
console.log(`Error de tipo ${err.name}. ¡Intentaremos solucionarlo!`)
}
}
finally {
console.log("Acceso al try...catch");
};
sin try…catch:
const NATALIA = {
padre: "Juan",
madre: "Paloma",
hermano: "Jose Miguel"
};
const EMILIO = {
padre: "Mariano",
madre: "Desconocida",
};
const ALEX = {
padre: "Andres",
madre: "Isabel",
hermano: "Pablo"
};
((a)=>
console.log(`2: Los padres de ${a} se llaman: ${a.madre} y ${a.padre}.`)
)(NATALIA);
console.log(a);
Why do you want to use an IIFE here? What does it gain you?
In any case, you’re throwing an error because of console.log(a);
- the variable a only has scope inside the IIFE.
2 Likes
Hola @kevinSmith !
Ay! Perdón! El console.log(a) no quería ponerlo. Eso se me ha colado.
Una pregunta, que es IIFE?
Lo que quiero con la función autoejecutable es poder mostrar el mensaje por console.log, que diga:
La persona (a) tiene el padre x y la madre x
Entonces, quiero que se muestre el contenido de (a) cuando se autoejecuta. Por ejemplo, autoejecuto la función con el nombre de “Natalia” y quiero que en el console.log se vea:
La persona Natalia tiene el padre x y la madre x
Es solo para practicar. Como todo lo que pregunto en el foro…XD
Gracias
Hola!
Hmm, obtener el nombre con el que se instancia un objeto es complicado y puede variar mucho. No es un método confiable para hacer lo que quieres.
No obstante, podrías obtener todas las Object.keys
del objeto global e iterar las keys
, comparandolas con el objeto que recibe la función hasta encontrar la que sea idéntica a la que se pasó al objeto.
Creo que la mejor forma es añadir un atributo nombre. También podrías definir un objeto personas
y dentro de este añadir cada una de las propiedades:
const personas = { NATALIA, EMILIO, ALEX }
y pasarle el nombre de la propiedad a la función:
((personas, a) => console.log(`2: Los padres de ${a} se llaman: ${personas[a].madre} y ${personas[a].padre}.`)
)(personas, 'NATALIA');
Por cierto, IIFE es una función autoejecutable.