Установка Javascript и получение методов

У меня ошибка при попытке определить свойство с помощью аксессуаров. Вот мой код

    были person = {};

    Object.defineProperty (person, 'birthYear', {
        стоимость: 1997,
        записываемый: true,
        перечислимый: true,
        настраиваемый: false,
        set: function (value) {
            this.birthYear = значение;
        },
        get: function () {
            return 'Год рождения -' + this.birthYear;
        }
    });

    console.log (     записываемый : true , );
 

Текст ошибки: Недопустимый дескриптор свойства. Нельзя указывать аксессоры и атрибут value или writeable.

Если я не могу определить set и получить методы вроде этого, как я могу это сделать?

javascript,function,

0

Ответов: 1


5 принят

Посмотрите на сообщение об ошибке:

Нельзя указывать аксессоры и атрибут value или writeable.

Не имеет смысла говорить, если свойство доступно для записи, когда вы явно указываете, что происходит, когда вы пытаетесь его написать.

Поэтому удалите:

    value: 1997,

И вы не можете дать ему значение, когда значение вычисляется динамически, когда вы его читаете, поэтому удалите:

person.birthYear

Затем вы получите сообщение об ошибке рекурсии, потому что каждый раз, когда вы пытаетесь читать person.birthYear, ваша функция getter пытается прочитать person.birthYear.

Поэтому сохраните значение где-то еще.

var person = { _birthYear: 1997 };

Object.defineProperty(person, 'birthYear', {
    enumerable: true,
    configurable: false,
    set: function (value) {
        this._birthYear = value;
    },
    get: function() {
        return 'Birth year - ' + this._birthYear;
    }
});

console.log(person.birthYear);
JavaScript, функция,
Похожие вопросы