Как при необходимости модифицировать сеттер объекта, не изменяя его объявление, если
при использовании
Object.defineProperty this указывает на объект, вызвавщий этот метод?
При попытке воспользоваться функцией
Object.defineProperty.call(...),
this все равно указывает на объект, вызвавший эту функцию.
Примерный кусок кода:
class Foo {
public ModifySetter(obj: object, field: string): void {
Object.defineProperty(obj, field, {
set: (value) => {
console.log(this); // объект класса Foo
this[field] = value;
// some actions
},
get: () => this[field]
});
}
}
const bar = (field) => {
Object.defineProperty(this, field, {
set: (value) => {
console.log(this); // объект класса Foo
this[field] = value;
// some actions
},
get: () => this[field]
});
}
class Foo {
public ModifySetter(obj: object, field: string): void {
bar.call(obj, field);
}
}