DEV Community

Cristian Fernando
Cristian Fernando

Posted on

Paracetamol.js馃拪| #187: Explica este c贸digo JavaScript

Explica este c贸digo JavaScript

Dificultad: B谩sico

class Animal {
  #name;
  constructor({name="S/N", age=0, color}){
    this.#name= name;
    this.age = age;
    this.color = color;
  }

  get getName(){
    return this.#name;
  }
}

const dog = new Animal({
  name:"Doggue", 
  age:2, 
  color:"red"
  });

console.log(dog.#name);
Enter fullscreen mode Exit fullscreen mode

A. undefined
B. Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class
C. Doggue
D. ReferenceError: '#name' is not defined

Respuesta en el primer comentario.


Respuesta:
B. Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class

En ES2020 se introdujo una manera de declarar atributos privados dentro de una clase en JavaScript, para dicho prop贸sito debemos usar el s铆mbolo # seguido del nombre del atributo, por ejemplo: #name.

Con esto logramos que dicho atributo solo pueda ser accedido dentro de la clase Animal, entonces se dice que el atributo #name esta encapsulado y por ende para poder usarlo fuera de la clase Animal tenemos que crear y llamar un getter como getName que aunque esta declarado no lo usamos en el ejemplo.

En este caso no es posible usar encadenamiento como console.log(dog.#name), ello producir谩 el error Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class.

Top comments (0)