Это мой базовый объект:
let resources = {
TEST_FLAG: false,
FRUIT: 'banana',
ID: 11
};
Я хотел бы получить доступ к каждому свойству этого объекта через setter
и getter
. Я пытаюсь сделать это ниже:
let dynamicResources = resources
for (let key in resources) {
Object.defineProperty(dynamicResources, key, {
get() {
console.log(`[debug]: GET <${key}>, VALUE <${this[key]}>`);
return `${this[key]}`;
},
set(value) {
console.log(`[debug]: SET <${key}>, VALUE <${this[key]}>`);
this[key] = value;
}
});
}
Идея состоит в том, что getter
и setter
могут быть сгенерированы из базового объекта с произвольным количеством свойств.
Когда I console.log()
Полученный объект я получаю так:
{
TEST_FLAG: [Getter/Setter],
FRUIT: [Getter/Setter],
ID: [Getter/Setter]
}
Что свидетельствует о том, что фабрика l oop сработала. Однако, когда я делаю это:
dynamicResources.FRUIT = 'berry';
я получаю следующую ошибку:
set: function set(value) {
RangeError: Maximum call stack size exceeded
, которая указывает на то, что вложенные функции несколько искажены.
Как я могу сгенерировать динамический c объект получения / установки на основе базового объекта c?