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

153
Vistas
Obtenga el valor del método privado en el método público en JavaScript

He creado un Circle de clase. Aquí

  1. _radius es un parámetro privado
  2. _areaCalculate es un método privado

Después de calcular el valor del método privado _areaCalculate . Necesito este valor para el método público areaPrint . Pero me muestra undefined .

 const _radius = new WeakMap() const _areaCalculate = new WeakMap() class Circle { constructor(r) { _radius.set(this, r) } [_areaCalculate]() { return (Math.PI * Math.pow(this.radius, 2)).toFixed(2) } areaPrint() { console.log("The area of Circle is: " + _areaCalculate.get(this)) } } let c = new Circle(4) c.areaPrint()

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

0

Si uno se apega al enfoque del OP de utilizar un mapa débil para acceder a un "miembro privado" de una instancia de Circle a través de un método prototípico, entonces solo necesita simplificar el código a un solo mapa de referencia y una función que calcula el área de una instancia de círculo. sobre la marcha ...

 function getComputedArea(circle) { return (Math.PI * Math.pow(rMap.get(circle), 2)).toFixed(2); } const rMap = new WeakMap(); class Circle { constructor(radius) { rMap.set(this, radius); } areaPrint() { console.log( `A radius ${ rMap.get(this) } circle area is ${ getComputedArea(this) }` ); } } let a = new Circle(4); let b = new Circle(9); a.areaPrint(); b.areaPrint();

... o uno sigue el consejo de VLAZ y comienza a utilizar la sintaxis de declaración de campo privado para campos de instancia privada .

Editar

De la discusión basada en comentarios más abajo con Bergi ...

"Los métodos privados, a diferencia de los campos privados, se asignan en el prototipo, no en la instancia, al igual que sus respectivas contrapartes públicas" . – Bergi

... la implementación de getComputedArea cambió de una función auxiliar local a un método de instancia privada .

 class Circle { #getComputedArea(radius) { return (Math.PI * Math.pow(this.#radius, 2)).toFixed(2); } #radius; constructor(radius) { this.#radius = radius; } areaPrint() { console.log( `A radius ${ this.#radius } circle area is ${ this.#getComputedArea() }` ); } } let a = new Circle(4); let b = new Circle(9); a.areaPrint(); b.areaPrint();

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