@AlphaDMQ

Как запретить явное изменение свойства fullName?

function User(fullName) {
    if (!~fullName.indexOf(' ')) throw new TypeError('Must be 2 words');

    this.fullName = fullName;

    Object.defineProperties(this, {
        firstName: {
            get: function () {
                return this.fullName.split(' ')[0];
            },

            set: function (newFirstName) {
                this.fullName = newFirstName + ' ' + this.lastName;
            },

            configurable: false,
            enumerable: true
        },
        lastName: {
            get: function () {
                return this.fullName.split(' ')[1];
            },

            set: function (newLastName) {
                this.fullName = this.firstName + ' ' + newLastName;
            },

            configurable: false,
            enumerable: true
        }
    });
}

let person = new User("Василий Палкин");

// person.fullName = 'It must not work!'
  • Вопрос задан
  • 59 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через TM ID
Похожие вопросы
KUPIBILET.RU Санкт-Петербург
от 100 000 до 130 000 руб.
HTML Academy Москва
от 85 000 до 100 000 руб.
16 июля 2018, в 20:00
5000 руб./за проект
16 июля 2018, в 18:53
8000 руб./за проект