@noracodes yeah, getters and setters are applied at a very low level in JS/TS
technically the way to understand it is that there are two kinds of properties, “data properties” and “accessor properties”. data properties have values. accessor properties do not have values, they only have accessor methods. so *anything which tries to modify that property will go through that method
(* of course, because things aren’t quite that simple, it is possible [altho hard] to overwrite an accessor property with a data property, and also possible [and somewhat easier] to shadow it further down in the prototype chain. but most JS methods do not do this)
@noracodes (but if you have
class A {}
A.prototype.value = "etaoin"
const a = new A()
a.value // "etaoin"
a.value = "shrdlu"
a.value // "shrdlu"
this creates a new data property on `a` instead of modifying the existing data property on `A.prototype`. this is more information than you were asking for tho haha)