#javascript #node.js
#javascript #node.js
Вопрос:
Я использую Javascript и nodejs (node_modules?). Почему дочерний класс Student не может получить доступ к установщику socialSecNum из родительского класса? Функция регулярных выражений работает просто отлично, когда я использую ее из родительского класса?
class Person {
constructor(firstName, lastName, sosialSecNum) {
this.firstName = firstName;
this.lastName = lastName;
this.sosialSecNum = sosialSecNum;
}
get firstName() {
return this._firstName;
}
set firstName(newFirstName) {
this._firstName = newFirstName;
}
get lastName() {
return this._lastName;
}
set lastName(newLastName) {
this._lastName = newLastName;
}
get sosialSecNum() {
return this._socialSecNum;
}
set sosialSecNum(newSocialSecNum) {
const regExTest = /d{6}[ -A]d{3}[0-9ABCDEFHJKLMNPRSTUVWXY]/;
if (newSocialSecNum.match(regExTest)) {
this._socialSecNum = newSocialSecNum;
} else {
this._socialSecNum = '123456-123A';
}
}
printing() {
console.log(this.firstName ' ' this.lastName ' is a person whos social security number is ' this.sosialSecNum);
}
};
const dude = new Person('jack', 'jacker', '123456-123B');
dude.printing();
class Student extends Person {
constructor(firstName, lastName, sosialSecNum, ECTS) {
super(firstName, lastName, ECTS);
this.ECTS = ECTS;
}
get ECTS() {
return this._ECTS;
}
set ECTS(newECTS) {
this._ECTS = newECTS;
}
printing() {
console.log(this.firstName ' ' this.lastName ' is a Student whos social security number is ' this.socialSecNum ' and who has ' this._ECTS ' ECTS points.');
}
}
const dudette = new Student('jill', 'jiller', '123456-123B', 5);
dudette.printing();
Ошибка, которую я получаю:
джек джекер — это человек, номер социального страхования которого 123456-123B c:Users … if (newSocialSecNum.match(regExTest)) { ^
Ошибка типа: newSocialSecNum.match не является функцией в Student.set sosialSecNum [как sosialSecNum] (c:…
Комментарии:
1. Опечатка:
ECTS
вместоsosialSecNum
вsuper()
вызове.
Ответ №1:
Вы передаете число 5 в качестве номера социального страхования в конструкторе. Числа не имеют match()
функции в своем прототипе, поэтому вы получаете ошибку «не является функцией». Измените свой код, чтобы вместо этого передать строку номера социального страхования, и он будет работать.
constructor(firstName, lastName, sosialSecNum, ECTS) {
super(firstName, lastName, sosialSecNum);
this.ECTS = ECTS;
}