4 回答

TA贡献1895条经验 获得超7个赞
一种更简洁的方法是完全省略该let Cat = {}部分。您可以使用该函数本身来创建Cat对象。
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)

TA贡献2011条经验 获得超2个赞
您的函数返回 Cat,但这只是函数作用域中的一个名称。为了在函数中使用该名称,您需要执行以下操作:
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)

TA贡献1752条经验 获得超4个赞
您会收到此错误,因为Cat仅在您的函数范围内定义。要Cat全局定义,请使用window.Cat而不是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);

TA贡献1998条经验 获得超6个赞
如果你想在控制台上输入时获得你的 Cat,Cat.name你必须像这样全局声明它:
function createCat(name, age) {
return {
name: name,
age: age,
meow: function() {
return "Meow!"
},
};
}
window.Cat = createCat('name', 2);
然后您就可以在全球范围内访问您的 Cat。
您还可以将 Cat 分配给浏览器控制台上的变量并通过Cat.name如下方式访问它:
const Cat = createCat('name', 2);
添加回答
举报