Всем привет. Есть class который создаёт объект вида:
{ firstName, lastName, fullName },
где свойства firstName, lastName можно читать и менять.
Если предметом изменений является firstName или lastName, то правим fullName.
В решении ниже при возвращается:
/*
person Badge {
_firstName: 'Tom',
fullName: 'Tom Cruise',
_lastName: 'Cruise'
}
==========
person Badge {
_firstName: 'Bobby',
fullName: 'Bobby Cruise',
_lastName: 'Cruise'
}
==========
person Badge {
_firstName: 'Bobby',
fullName: 'Bobby Carrey',
_lastName: 'Carrey'
}
==========
*/
Как исправить, чтобы свойства возвращались без нижнего подчёркивания?
/*
person Badge {
firstName: 'Tom',
lastName: 'Cruise'
fullName: 'Tom Cruise',
}
*/
class Badge {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.fullName = `${firstName} ${lastName}`;
}
set firstName(value) {
this._firstName = value;
this.fullName = `${this._firstName} ${this._lastName}`;
}
set lastName(value) {
this._lastName = value;
this.fullName = `${this._firstName} ${this._lastName}`;
}
}
const person = new Badge('Tom', 'Cruise');
console.log('person', person);
console.log('==========');
person.firstName = 'Bobby';
console.log('person', person);
console.log('==========');
person.lastName = 'Carrey';
console.log('person', person);
console.log('==========');