gpt4 book ai didi

javascript - 在 "inherit"中,我在使用 'return' 代码时遇到问题

转载 作者:行者123 更新时间:2023-12-01 01:03:58 27 4
gpt4 key购买 nike

下面的代码没有任何问题。运行起来很顺利。

class Animal{
constructor(name,age){
this.name = name;
this.age = age;
}
getPrint(){
console.log(`name: ${this.name}\nage:${this.age}`);
}
};

class Cat extends Animal{
getPrint(){
super.getPrint();
}
}


let animal = new Animal('miyav',9);
let cat = new Cat("mayov",12);
// cat.name = "mayov";
// cat.age = 12;
animal.getPrint()
cat.getPrint()

但是当我尝试使用“return”编写上述代码时,出现错误。

class Animal{
constructor(name,age){
this.name = name;
this.age = age;
}
getPrint(){
return `name: ${this.name}\nage:${this.age}`;
}
};

class Cat extends Animal{
getPrint(){
super.getPrint();
}
}


let animal = new Animal('miyav',9);
let cat = new Cat("mayov",12);
console.log(animal.getPrint());
console.log(cat.getPrint());

我想我已经解决了问题,但我仍然不明白为什么。

如果我们在上面的代码中输入以下代码,问题就解决了。 但是如何呢?

class Cat extends Animal{}

最佳答案

正如 @Pointy 在评论中提到的,第二个示例在 Cat 类的 getPrint() 方法中缺少 returnsuper.getPrint() 按预期从父类(super class)返回值,但该值不会从子类的 getValue 方法返回。要修复它,只需将 return 添加到子类中的方法

class Animal{
constructor(name,age){
this.name = name;
this.age = age;
}
getPrint(){
return `name: ${this.name}\nage:${this.age}`;
}
};

class Cat extends Animal{
getPrint(){
return super.getPrint();
}
}


let animal = new Animal('miyav',9);
let cat = new Cat("mayov",12);
console.log(animal.getPrint());
console.log(cat.getPrint());

class Cat extends Animal{} 起作用的原因是,由于您没有在子类中重新定义 getPrint 方法,因此它会自动从父类(super class)(即可能是您想要的,因为您的 getPrint 方法没有做任何额外的事情)。因此,如果您声明了一个空子类,它将获得父类(super class)的所有方法。

class Cat extends Animal{}
let cat = new Cat("mayov",12);
console.log(cat.getPrint());

这是有效的,因为 cat 实例将使用父类(super class)的 getPrint 方法,该方法已通过 return 关键字正确定义。

关于javascript - 在 "inherit"中,我在使用 'return' 代码时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55798885/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com