¿Hay alguna forma de agregar setter a un objeto de forma dinámica como esta?
output = document.querySelector(".output") log = (out)=>{ output.innerHTML = out } class A { constructor(some){ this._some = some } } myObj = new A(1) // myObj = Add setter there... <div class="output"></div>Solo necesito esto para escribir clases en las que las instancias puedan crear dinámicamente setters para sus propiedades.
Puedes hacerlo así:
class A { constructor(some){ this[some] = some // This needs to be a string, otherwise it doesn't work } }Si necesita hacer cosas más complejas, puede hacer algo como:
const exampleInput = { prop1: 123, prop2: "someString" } class A { // Make some an object like the one above constructor(some){ for (prop in some) { this[prop] = some[prop] } } }¿Es esto lo que quieres?
class A { constructor(some){ this._some = some } } let myObj = new A(1) console.log(myObj._some) // 1 Object.defineProperty(myObj, 'setSome', { set: function(x) { this._some = x ; } }); myObj.setSome = 77; console.log(myObj._some) // 77