@fatedupi

Как сделать Object.assign, который сохранит акессоры(getters)?

Всем привет!
Необходимо объединить 2 объекта, в одном из которых есть аккессоры, но при попытке сделать Object.assign акессоры копируются как значения.
Подскажите, как мне их сохранить акессорами?

var foo = {
	setup: function() {
		for(i = 0; i < 100; i++) {
			console.log(this.random)
		}
	},
	get random() {
		return Math.random()
	}
}

var bar = {
	a: 1
}

var obj = Object.assign({}, foo, bar);


В этом коде foo.setup() выдаст 100 случайных значений, а obj.setup() - 100 одинаковых.

Подскажите, пожалуйста, как сделать?
  • Вопрос задан
  • 558 просмотров
Решения вопроса 1
@Aves
Object.getOwnPropertyNames(foo).forEach(function(prop) {
  Object.defineProperty(
    bar,
    prop,
    Object.getOwnPropertyDescriptor(foo, prop)
  );
});

Еще вариант https://developer.mozilla.org/ru/docs/Web/JavaScri...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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