ООП в JavaScriptДескрипторы свойствmedium

Продвинутый Object.assign

Мы знаем, как работает Object.assign:

const obj = { x: 1, y: 2, }; const obj2 = { x: 3, z: 4, }; Object.assign(obj, obj2); console.log(obj); // { x: 3, y: 2, z: 4 }

Проблема в том, что он не поддерживает геттеры, выполняя их в момент мержа объектов.

Реализуйте функцию objectAssign, которая мержит сеттеры и геттеры аналогично обычным свойствам.

const obj = { x: 1, y: 2, }; const obj2 = { get doubleX() { return this.x * 2; }, set incY(increment) { this.y += increment; }, }; objectAssign(obj, obj2); console.log(obj); // { x: 1, y: 2 } console.log(obj.doubleX); // 2 obj.incY = 5; console.log(obj.y); // 7