Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

137
Views
¿Puedo usar campos privados en es5 si no, cómo implementa campos privados en las funciones del constructor es5?

He estado aprendiendo cómo funcionan las clases "bajo el capó" al implementarlas usando es5. Dado que las clases de javascript son solo "azúcar sintáctico". Recuerdo haber leído que las clases simplemente se convierten en funciones regulares de es5. Por ejemplo

 class Dog { constructor(name) { this.name = name } speak(text){ console.log(text) } } const mydog = new Dog("bruno") mydog.speak("I do be liking my bones thicc")

se convierte en algo como esto (pero usando la palabra clave "esto", por supuesto)

 function Dog(name) { const dog = Object.create(Dog) dog.name = name Dog.prototype.speak = function (text) { console.log(text) } return dog } const mydog = Dog("bruno") mydog.speak("I know I could have refactored to used the 'new' keyword instead")

Aquí está el problema, parece que no puedo implementar campos privados. ¿No debería ser esto posible si las clases son solo "azúcar sintáctica y JavaScript sigue estando basado en prototipos?

Por ejemplo, tratando de convertir la siguiente clase

 class ClassWithPrivateField { #privateField; constructor() { this.#privateField = 42; delete this.#privateField; // Syntax error this.#undeclaredField = 444; // Syntax error } } const instance = new ClassWithPrivateField() instance.#privateField === 42;

en una función de constructor es5 de la siguiente manera no funciona. da el error,

"#privateField' debe declararse en una clase adjunta"

 function ClassWithPrivateField (){ #privateField; this.#privateField = 42; delete this.#privateField; // Syntax error this.#undeclaredField = 444; // Syntax error } const instance = new ClassWithPrivateField() instance.#privateField === 42;
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!