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

175
Vistas
¿Cuál es el punto de las declaraciones de campo público en JavaScript?

Entonces, de acuerdo con los documentos de MDN :

 class Rectangle { height = 0; width; constructor(height, width) { this.height = height; this.width = width; } }

Al declarar los campos por adelantado, las definiciones de clase se vuelven más autodocumentadas y los campos siempre están presentes.

Como se vio anteriormente, los campos se pueden declarar con o sin un valor predeterminado.

Al principio pensé que si creaba un objeto usando el constructor anterior y no pasaba los argumentos de alto y ancho , tendría height = 0 . Sin embargo, no es un caso. Es undefined .

 let rectangle = new Rectangle() console.log(rectangle.height) // this is undefined

Entonces, ahora no puedo entender el punto de las declaraciones de campo público. Parecen líneas adicionales de código sin mucho propósito. ¿Qué beneficios traen? Gracias por cualquier explicación.

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

0

La línea this.height = height; reemplaza el valor predeterminado de la declaración con el valor del parámetro de height . No importa que no se haya proporcionado ningún argumento, aún realiza la asignación. Y cuando no se proporciona el argumento, el parámetro predeterminado es undefined .

Puede verificar esto y no anular el valor predeterminado inicial:

 class Rectangle { height = 0; width; constructor(height, width) { if (height !== undefined) { this.height = height; } this.width = width; } }

O podría proporcionar los valores predeterminados en la lista de argumentos del constructor en lugar de las declaraciones de propiedades.

 class Rectangle { height; width; constructor(height = 0, width = 0) { this.height = height; this.width = width; } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Está asignando a la height en el constructor, anulando efectivamente la asignación de campo de clase:

 this.height = height;

Los campos de clase asignan propiedades a la instancia antes de que se ejecute el cuerpo del constructor, en su mayor parte: su código original es casi equivalente a

 class Rectangle { constructor(height, width) { this.height = 0; this.width; this.height = height; this.width = width; } } let rectangle = new Rectangle() console.log(rectangle.height)

lo que debería hacer que el problema sea obvio.

Parecen líneas adicionales de código sin mucho propósito.

Sí, si asigna incondicionalmente esas propiedades en el constructor, tener dichos campos no ayuda mucho: les dirá a los lectores del código rápidamente qué propiedades de instancia existirán, pero también significa código adicional.

Los campos de clase son mucho más útiles cuando desea asignar propiedades de instancia que no se sobrescriben inmediatamente, como:

 class Rectangle { height = 5; constructor(width) { this.width = width; } } let rectangle = new Rectangle(8) console.log(rectangle.height, rectangle.width)

Los campos de clase son un buen azúcar de sintaxis cuando tiene varias propiedades para asignar a la instancia que no dependen de los argumentos del constructor.

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