Paracetamol.js๐Ÿ’Š| #187: ์ฝ”๋“œ ์„ค๋ช… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

3588 ๋‹จ์–ด javascriptspanishprogrammingwebdev

Explica este codigo JavaScript



๋‚œ์ด๋„: 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);


A. undefinedB. Uncaught SyntaxError: Private field '#name' must be declared in an enclosing classC. DoggueD. ReferenceError: '#name' is not defined
Respuesta en el primer comentario.


์‘๋‹ต:
B. Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class
En ES2020 se introdujo una manera 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 ์˜ค๋ฅ˜ Uncaught SyntaxError: Private field '#name' must be declared in an enclosing class .

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ