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

162
Vistas
¿Hay alguna manera de establecer un valor singular en un WeakMap en una clase extendida en JavaScript?

No estoy seguro de haber formulado la pregunta con mucha claridad, aunque esencialmente tengo dos clases en este código de ejemplo, una clase 'Car' y una clase 'CustomCar'.

Estoy experimentando con WeakMaps para miembros de clases privadas y quiero modificar uno de estos valores de WeakMap en una clase extendida, mi código es el que se muestra:

 const privateProperties = new WeakMap(); // Car Class class Car { constructor(colour, seats) { privateProperties.set(this, { colour: colour, seats: seats, type: 'Car', }); } get colour() { return privateProperties.get(this).colour; } start() { console.log( `Started the ${privateProperties.get(this).colour} ${ privateProperties.get(this).type } with ${privateProperties.get(this).seats} seats!\n` ); } } // Custom Car Class class CustomCar extends Car { constructor(colour, seats, type = 'Custom Car') { super(); privateProperties.set(this, { colour: colour, seats: seats, type: type, }); } } module.exports.Car = Car; module.exports.CustomCar = CustomCar;

Quería cambiar el valor asociado con la tecla 'tipo' en la clase CustomCar a cualquier valor ingresado como parámetro, es decir:

 let myCar = new CustomCar('blue', 5, 'Polo');

En el código anterior, el valor 'tipo' se establecería en 'Polo'.

Sin embargo, la única forma en que he podido hacer esto hasta ahora es mediante la duplicación del código de la clase principal:

 privateProperties.set(this, { colour: colour, seats: seats, type: type, });

Parece que no puedo establecer el valor de tipo en WeakMap de otra manera, ¿este código es correcto en términos de mejores prácticas?

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No es necesario que asigne todo el elemento privateProperties , simplemente reemplace la propiedad de type .

 class CustomCar extends Car { constructor(colour, seats, type = 'Custom Car') { super(colour, seats); privateProperties.get(this).type = type; } }
about 4 years ago · Santiago Trujillo 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