Belartale
@Belartale
Front-end week-junior developer

JS как обратиться к классу метода, в данном примере?

Как обратиться к методу класса? класс User и два extends этого же класса, также есть функция в ней if - там мы присваиваем объект переменной. В конце берём метод isAdmin из CommonUser и записываем в document.cookie. Суть в том - что браузер не находит нужный объект, точнее я не могу понять.
Проблема с областью видимости, но если установить запись куки непосредственно в if возле beUser и всё это оберну в return () => {...} не будет работать всё равно, подскажите как правильно сделать.
В самом низу обращение к классу!
let isAdmin = false;

class User {
    constructor(userName, phone, email, psw, country, postCode, userText) {
        this.userName = userName;
        this.phone = phone;
        this.email = email;
        this.psw = psw;
        this.country = country;
        this.postCode = postCode;
        this.userText = userText;
    }
}

class CommonUser extends User {
    constructor(
        userName,
        phone,
        email,
        psw,
        country,
        postCode,
        userText,
        isAdmin
    ) {
        super(userName, phone, email, psw, country, postCode, userText);
        this.isAdmin = isAdmin;
    }
}

class AdminUser extends User {
    constructor(
        userName,
        phone,
        email,
        psw,
        country,
        postCode,
        userText,
        isAdmin
    ) {
        super(userName, phone, email, psw, country, postCode, userText);
        this.isAdmin = isAdmin;
    }
}

function registrationUser() {
    if (isAdmin) {
        let beAdmin = new AdminUser(
            userName.value,
            phone.value,
            email.value,
            psw.value,
            country.value,
            postCode.value,
            userText.value,
            isAdmin
        );
        messageUserOrAdmin.innerHTML = `${beAdmin.userName} you is admin`;
        console.log(`${beAdmin.userName} you is admin`);
        console.log(beAdmin);
        console.log(document.cookie);
    } else {
       let beUser = new CommonUser(
            userName.value,
            phone.value,
            email.value,
            psw.value,
            country.value,
            postCode.value,
            userText.value,
            isAdmin
        );
        messageUserOrAdmin.innerHTML = `${beUser.userName} you don't admin`;
        console.log(`${beUser.userName} you don't admin`);
        console.log(beUser);
    }
}

let adminAccess = beUser.isAdmin;
document.cookie = `${adminAccess} max-age=3000;`;
console.log(document.cookie);
  • Вопрос задан
  • 227 просмотров
Решения вопроса 1
@SevSergei
у тебя архитектура кривоватая получилось:
1) что AdminUser, что CommonUser выполняют одно и тоже. От CommonUser можно избавиться, так как по сути это User
2) В метод register надо передавать созданный объект юзера, а не внутри метода его создавать. У класса User может быть метод getRole по которому будет происходить проверка внутри метода (если нужна)
3) Проще юзать готовый модуль работы с куки, например, js-cookie - будет более читабельный код
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы