Я играю с Classes & Inheritance в Javascript, но я не понимаю одну часть поведения конструкторов. В моем родительском классе я hard-coded
bankAccountStatus
на следующее значение: Bank Account is Low
. Затем я создал подкласс с именем MemberStatus и определил параметры конструктора как те же самые входы родительского класса. Однако, если я попытаюсь изменить bankAccountStatus
когда я вызываю new MemberStatus
на что-то еще, это не займет. Я могу, конечно, изменить это на имя параметра, чтобы заставить его работать, но я пытаюсь понять его функциональность. В любом случае, чтобы изменить это значение, не преобразовывая его в родительский класс на this.bankAccountStatus = bankAccountStatus;
class User {
constructor(firstName, lastName, phone, bankAccountStatus){
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
this.bankAccountStatus = 'Bank Account is Low';
}
}
class MemberStatus extends User {
constructor(firstName, lastName, phone, bankAccountStatus, vipStatus){
super(firstName, lastName, phone, bankAccountStatus);
this.vipStatus = vipStatus;
}
}
let john = new MemberStatus('John', 'Doe', '555-123-4567', 'Bank Account is Wealthy', 'Gold');
console.log(john);
Зачем добавлять его в конструктор User
если вы собираетесь его по умолчанию? Конструкторы расширенных классов не обязательно должны быть одинаковыми:
class User {
constructor(firstName, lastName, phone){
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
this.bankAccountStatus = 'Bank Account is Low';
}
}
class MemberStatus extends User {
constructor(firstName, lastName, phone, bankAccountStatus, vipStatus){
super(firstName, lastName, phone);
this.bankAccountStatus = bankAccountStatus
this.vipStatus = vipStatus;
}
}
let john = new MemberStatus('John', 'Doe', '555-123-4567', 'Bank Account is Wealthy', 'Gold');
console.log(john);
Ты спрашиваешь:
В любом случае, чтобы изменить это значение, не преобразовывая его в родительский класс на this.bankAccountStatus = bankAccountStatus
Если вы посмотрите на свои конструкторы:
class User {
constructor(firstName, lastName, phone, bankAccountStatus){
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
this.bankAccountStatus = 'Bank Account is Low';
}
}
class MemberStatus extends User {
constructor(firstName, lastName, phone, bankAccountStatus, vipStatus){
super(firstName, lastName, phone, bankAccountStatus);
this.vipStatus = vipStatus;
}
}
Вы передаете строку в качестве 4-го параметра пользовательской переменной, но вы никогда не обращаетесь к ней. Если вы хотите указать значение по умолчанию this.bankAccountStatus, вы можете поместить его в параметры, например:
class User {
constructor(firstName, lastName, phone, bankAccountStatus = 'Bank Account is Low'){
this.firstName = firstName;
this.lastName = lastName;
this.phone = phone;
this.bankAccountStatus = bankAccountStatus;
}
}
Удачи с вашим проектом!