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);
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
.