Задать вопрос
@kirillleogky

Как работает get set в классе?

Туплю
Не могу понять как происходит проверка на длинну слова
При задании let user = new User("Иван"); как он проверяет с помощью set?
Ведь get и set находятся в prototype. Как они проверяют на колличество букв?
class User {

    constructor(name) {
        // вызывает сеттер
        this.name = name;
    }

    get name() {
        return this._name;
    }

    set name(value) {
        if (value.length < 4) {
            alert("Имя слишком короткое.");
            return;
        }
        this._name = value;
    }

}

let user = new User("Иван");
alert(user.name); // Иван

user = new User(""); // Имя слишком короткое.
  • Вопрос задан
  • 613 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
filgaponenko
@filgaponenko
frontend developer
Все верно, функции находятся в prototype.
В момент вызова конструктора создается пустой объект и в его прототип записываются свойства геттер и сеттер.

Но это не просто свойство, а сеттер.
Когда транспайлер разбирает ваш класс он устанавливает свойство при помощи свойства set defineProperties.

Если у объекта в цепочке прототипов есть сетер, то будет использован именно он.
Вот пример на простых объектах.
5d4a920131d7c315637512.jpeg
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы