Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since septiembre de 2022.
Nota: Las declaraciones de campos públicos y privados son una característica experimental (en estado 3) propuesta por el TC39, el comite de estandares de JavaScript. El soporte y funcionamiento en navegadores es limitado, pero la funcionalidad puede ser usada a través de un paso durante el proceso del build por medio de sistemas como Babel. Revise compat information mas abajo.
Los campos públicos y estáticos son propieades editables, enumerables, y configurables. A diferencia de su contraparte privada, estos participan en la herencia de prototipo.
Los campos estáticos públicos son útiles cuando desea que exista un campo solo una vez por clase, no en cada instancia de clase que cree. Esto es útil para cachés, configuración fija o cualquier otro dato que no necesite replicarse en todas las instancias.
Los campos estáticos públicos se declaran utilizando la palabra clave static. Se agregan al constructor de la clase en el momento de la evaluación de la clase utilizando Object.defineProperty(). Se accede nuevamente desde el constructor de la clase.
Campos sin inicializadores son inicializados como undefined.
Los campos estáticos públicos no se reinicializan en las subclases, pero se puede acceder a ellos a través de la cadena de prototipo.
Cuando se inicializasn campos this se refiere al constuctor de clase. Tambien puede ser referenciado por nombre, y se puede usar super para obtener el constructor de la superclase si lo tiene.
Los campos de instancia públicos existen en cada instancia de la clase que se ha creado. Al declarar un campo publico podemos asegurarnos que dicho campo siempre esta presente, y la definicion de la clase esta auto-documentada.
Los campos de instancia públicos son agregados with Object.defineProperty ya sea a la hora de ser construido en la clase base (antes que el metodo constructor corra), o justo despues que super() returne en una subclase.
Campos sin inicializadores son inicilizados en undefined.
Al igual que las propiedades, los nombres de campos pueden ser calculados (computed)
Cuando se inicializan campos this se refiere a la instancia de clase que esta siendo construida. Al igual que con los metodos publicos de instancia, si usted esta en una subclase puede acceder a al prototypo de la superclase usando super.
La palabra reservada static define un metodo estático para una clase. Los métodos estáticos no son llamads usando una instancia de la clase. En lugar de eso son llamados sobre la clase como tal. Estos metodos estáticos son frecuentemente funciones utilitarias que permiten por ejemplo la creación y clonacion de objetos.
Los métodos estáticos son agregados al constructor de la clase usando Object.defineProperty duranten el evaluación de la clase. Estos metodos son "escribibles" (writable), no-enumerables y configurables.
Como su nombre lo indica, los métodos publicos de instancia son metodos que estan disponibles para cualquier instancia de una clase.
Los métodos públicos de instancia son agregeados al prototipo de clase durante la evaluacón de la clase usando Object.defineProperty. Estos metodos son "escribibles" (writable), no-enumerables y configurables.
Usted puede usar un generador, async y funciones generadoras asincronas
Dentro de un metodo de instancia, this se referie a la instancia como tal. En las subclases, super le permite acceder el prototipo de la superclase, permitiendo así llamar métodos de la superclase.
Existen metodos especiales llamados "Getters" y "Setters" que se vinculan a una propiedad de una clase, y que son ejecutados o llamados cuando esa propiedad es consultada o moditficada. Puede usar las palabras reservaddas get y set para declarar una instancia pública de "getter" or "setter". [N.T. preferí decir Getter/Setter que decir Consultadores/Mofificadores]
Private fields are accessible on the class constructor from inside the class declaration itself.
The limitation of static variables being called by only static methods still holds.
Private static fields are added to the class constructor at class evaluation time.
There is a provenance restriction on private static fields. Only the class which defines the private static field can access the field. This can lead to unexpected behaviour when using this
Private instance fields are declared with # names ( pronounced "hash names"), which are identifiers prefixed with #. The # is a part of the name itself and is used for declaration and accessing as well.
The encapsulation is enforced by the language. It is a syntax error to refer to # names not in scope.
Like their public equivalent, private static methods are called on the class, not instances of the class. Like private static fields, they are only accessible from inside the class declaration.
Private static methods may be generator, async and async generator functions.
Private instance methods are methods available on class instances whose access is restricted in the same manner as private instance fields.
Private instance methods may be generator, async or async generator functions. Private getters and setters are also possible:
| ECMAScript® 2027 Language Specification # prod-FieldDefinition |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 17 dic 2024 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.