如何将类构造函数的前一个实例的参数扩展到另一个实例



我想问一下我做错了什么

我的目标

我想从类构造函数创建实例。第一个是一个更通用的类Person,然后是另一个从该类继承属性的类。

我的问题是当所有类都设置好了,并且声明了指向Person构造函数的第一个实例时,如何将上一个实例的key: values传递给下一个实例,因为我不想在相同的参数上重复我自己。

我目前正在传播实例的先前参数,但很明显,我做错了什么。

class Person {
constructor (name,yearOfBirth,job) {
this.name = name;
this.yearOfBirth = yearOfBirth;
this.job = job;
}
getAge() {
return new Date().getFullYear() - this.yearOfBirth
}
greet(){
return `${this.name} is a ${this.getAge()} years old ${this.job}`
}
}
class footballPlayer extends Person {
constructor(name,yearOfBirth, job, team, cups) {
super(name, yearOfBirth, job)
this.team = team;
this.cups = cups;
}
cupsWon() {
console.log(`${this.name} who was bord on ${this.year} and works as a ${this.job} won ${this.cups} with ${this.team}`);
}
}
const vagg = new Person('vaggelis', 1990, 'Developer');
const vaggA= new footballPlayer( {...vagg} , 'real madrid', 4)
console.log(vagg.greet());
console.log(vaggA.cupsWon());

谢谢!

如果我正确理解您想要做什么,您只需要将描述Person的参数值传递给footballPlayer(注意:按照惯例,类名应该是大写的(。

var vaggA = new footballPlayer( ...Object.values(vagg) , 'real madrid', 4);

编辑:如果你担心Object.values的顺序不同(这是一个真正的威胁(,你可以在Person类中创建一个getter函数,它将按照应该给构造函数的顺序返回参数的确切列表:

class Person {
// ...
describe() {
return [this.name, this.yearOfBirth, this.job];
}
}
const vaggA = new footballPlayer( ...vagg.describe() , 'real madrid', 4);

最新更新