Los documentos de MDN para campos privados mencionan:
Es un error de sintaxis hacer referencia a # nombres fuera del alcance. También es un error de sintaxis hacer referencia a campos privados que no se declararon antes de llamarlos, o intentar eliminar campos declarados con eliminar.
Fuera de los campos privados, puedo definir una función que devuelve un constructor que luego se puede invocar como una clase:
function CtorCreator(...) { const CtorBeingCreated = function Whatever(...) {...} // programmatically manipulate CtorBeingCreated return CtorBeingCreated } const Ctor = CtorCreator(...) const instance = new Ctor(); En esto puedo definir mediante programación campos y métodos basados en argumentos pasados a la función CtorCreator . Por ejemplo
... CtorBeingCreated.prototype[...] = ... ...¿Puedo también definir campos y métodos privados de esa manera? Por ejemplo, alguna forma de permitirme hacer
... addPrivateFieldToCtor(CtorBeingCreated, <field-name>, <initial-value>) // or addPrivateMethodToCtor(CtorBeingCreated, <method-name>, <method-body>) // method body can access <field-name> previously defined ...