¿Cómo se usa una función para crear un objeto con Javascript?
Estoy haciendo un curso de JavaScript. Estoy en el capítulo de "Objetos y clases", y no sé cómo resolver algunas asignaciones en mi tarea. El primer ejercicio es así
function createCat(name,age){
//Create a new object with the property "name" and the value defined by the argument "name".
//Add a new property to the object with the name "age" and use the value defined by the argument"age"
//Add a methos (function) called meow that returns the string "Meow"!
}
Y esto es lo que estoy intentando
function createCat(name,age){
var Cat={};
Cat.Name=name;
Cat.Age=age;
Cat.meow=function(){return "Meow!"};
return Cat;
}
Estoy probando la función cargando el script en un archivo index.html, abriendo ese archivo en un navegador y luego probando las funciones en la consola web. Ejecuto la función y no hay problema. Luego, pruebo si el objeto Cat fue devuelto escribiendo Cat.Name en la consola, lo que da como resultado un error. Lo mismo sucede cuando llamo a la función en una línea de código a continuación y luego intento acceder a las propiedades del Objeto. El error dice "ReferenceError: Cat no está definido". ¿Qué estoy haciendo mal? ¡Gracias!
Respuestas
Una forma más limpia de hacer esto es omitir la let Cat = {}pieza por completo. Puede utilizar la función en sí para crear un Catobjeto.
function Cat(name, age) {
this.name = name;
this.age = age;
this.meow = () => console.log("Meow!");
}
let myCat = new Cat("Waldorf", 16)
let anotherCat = new Cat("Statler", 12)
myCat.meow()
console.log(anotherCat.name)
Su función devuelve Cat, pero este es solo un nombre en el alcance de la función. Para usar ese nombre fuera de la función, debe hacer esto:
function createCat(name, age) {
var cat = {};
cat.Name = name;
cat.Age = age;
cat.meow = () => "Meow!";
return cat;
}
let Cat = createCat("mist", 16);
console.log(Cat)
Obtiene este error porque Catsolo se define dentro del alcance de su función. Para definir Catglobalmente, use en window.Catlugar de var Cat:
function createCat(name, age) {
window.Cat = {};
Cat.Name = name;
Cat.Age = age;
Cat.meow = function() {
return "Meow!"
};
return Cat;
}
console.log(Cat.Name);
Si desea obtener su gato cuando escribe en la consola Cat.name, debe declararlo globalmente así:
function createCat(name, age) {
return {
name: name,
age: age,
meow: function() {
return "Meow!"
},
};
}
window.Cat = createCat('name', 2);
Entonces puede acceder a su gato en todo el mundo.
También puede asignar el gato a una variable en la consola del navegador y acceder a ella Cat.nameasí:
const Cat = createCat('name', 2);