Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
¿Cómo simular variables protegidas en clases de javascript?

¿Cuál es la mejor manera de simular variables protegidas en javascript ?

 class Parent{ #variable; // Private variable. This is not to be public. constructor(value) { this.#variable = value; } } class Child extends Parent{ getNewVariable() { return (1 + this.#variable); // Uncaught SyntaxError: Private field '#variable' must be declared in an enclosing class // We want #variable to be accessible without making it public. } }

Dado que javascript aún no admite variables protegidas,

¿Cuál es la mejor opción para acceder a variables privadas de superclases en clases extendidas?

No he podido encontrar mucha documentación sobre esto, por lo que cualquier sugerencia sería muy útil.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

¿Qué pasa con el uso de TypeScript? Las clases de TypeScript admiten la palabra clave protected ( consulte los documentos ) y tienen muchos beneficios adicionales sobre JavaScript estándar.

about 4 years ago · Juan Pablo Isaza Denunciar

0

+++ respuesta tardía, pero aquí vamos... +++

Un enfoque basado en WeakMap probablemente cubra lo que el OP está buscando ...

 const protectedStatesMap = new WeakMap; class Parent{ constructor(foo) { protectedStatesMap.set(this, { foo }); } getFoo() { return protectedStatesMap.get(this).foo; } } class Child extends Parent{ constructor(foo, bar) { super(foo); Object.assign(protectedStatesMap.get(this), { bar }) } getBar() { return protectedStatesMap.get(this).bar; } } const childA = new Child('foo', 'bar'); const childB = new Child('baz', 'biz'); console.log('childA.getFoo() ...', childA.getFoo()); console.log('childA.getBar() ...', childA.getBar()); console.log('childB.getFoo() ...', childB.getFoo()); console.log('childB.getBar() ...', childB.getBar());
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda