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.
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.
์๋ต:
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
.
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(Paracetamol.js๐| #187: ์ฝ๋ ์ค๋ช ์๋ฐ์คํฌ๋ฆฝํธ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/duxtech/paracetamoljs-187-explica-este-codigo-javascript-550aํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค