Я хочу получить результат таким образом,
Lucifer is 20 years old
Default is 20 years old
проблема в том, что если я отправлю пустую строку в качестве первого аргумента и 20 как вторую, я получаю следующий вывод:
Lucifer is 20 years old
is 20 years old
И снова, если я отправлю только один параметр, скажем, 20 в качестве первого параметра и второго параметра, я получаю следующий вывод:
Lucifer is 20 years old
20 is 20 years old
Вот мой код, а конструктор - это функция, которую я отправляю параметрам:
class Person {
constructor(name = 'Default',age=0){
this.name = name;
this.age = age;
}
getDescription() {
return '${this.name} is ${this.age} years old'
}
}
const me = new Person('Lucifer',20);
console.log(me.getDescription());
const meNew = new Person('',20);
console.log(meNew.getDescription());
У вас не может быть необязательных аргументов перед обязательными аргументами. Вы должны изменить порядок своих аргументов или использовать объект конфигурации:
class Person {
constructor(options = {}) {
this.name = options.name || 'Default';
this.age = options.age || 20;
}
getDescription() {
return '${this.name} is ${this.age} years old'
}
}
const me = new Person({name: 'Lucifer', age: 20});
console.log(me.getDescription());
const meNew = new Person({age: 20});
console.log(meNew.getDescription());
new Person(undefined, 20)
, но это не то, что должно быть сделано.