MrGobus
@MrGobus
Иван

Get\Set для унаследованных классов, как?

Как я понял для при описании класса гетеры и сетеры задаются при описании prototype

ClassName.prototype = {
  sex x(value) {
    ...
  }
}


После наследования (както так : ClassName2.prototype = Object.create(ClassName.prototype)) изменять prototype как я привел в примере выше нельзя. И как теперь быть если надо добавить новому классу подобных гетеров/сетеров ?
  • Вопрос задан
  • 152 просмотра
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Ну добавить такие вот геттеры/сеттеры вы можете, если используете Object.create:
ClassName2.prototype = Object.create(ClassName.prototype, {
   foo: {
        enumerable: false,
        get: function () {}
        set: function () {}
   }
}))
Ответ написан
Комментировать
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Добавлю, что если прототип уже создан, то можно воспользоваться Object.defineProperty()
Оба примера делают одно и то же:

NewClass.prototype = Object.create(Class.prototype, {
	a: {
		set: function () {...}
	}
});

NewClass.prototype = Object.create(Class.prototype);
Object.defineProperty(NewClass.prototype, 'a', {
	set: function () {...}
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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