Всякий раз, когда у вас есть экземпляр, установщик которого вы хотите обойти, вызов Object.defineProperty
для экземпляра для установки свойства работает:
class Foo {
set prop(arg) {
console.log('setter invoked');
}
}
const f = new Foo();
Object.defineProperty(f, 'prop', { value: 'val' });
console.log(f.prop);
Это не повлияет на любой объект, оно повлияет только на объекты, с которыми вы явно вызываете Object.defineProperty
. Столкновения с другими объектами, о которых вы, похоже, беспокоитесь, не произойдут.
Другой (странный) вариант - удалить установщик в прототипе, хотя, если класс используется где-то еще, вне вашего кода, это может вызвать проблемы:
class Foo {
set prop(arg) {
console.log('setter invoked');
}
}
delete Foo.prototype.prop;
const f = new Foo();
f.prop = 'val';
console.log(f.prop);