[Javascript]class 안의 feild들과 접근제어 방법

hello__0·2022년 11월 5일
0

Javascript-Class

목록 보기
3/7
class Milk {
  taste; //외부로 부터 받아옴(생략가능)
  emoji; //외부로 부터 받아옴(생략가능)
  type = "우유"; //클래스가 만들어지자 마자 우유로 초기화가 됨
  // 생성자
  constructor(taste, emoji) {
    this.taste = taste;
    this.emoji = emoji; 
  }
  display(){
    console.log(`${this.taste}: ${this.emoji}`);
  }  
  
}
const choco = new Milk('chocolate', '🍫');

console.log(choco);

인스턴스를 만들 때 초기화가 되어야 되는 것이라면 constructor 위에 생성자 밖에서 설정할 수 있다.


접근제어자

const choco = new Milk('chocolate', '🍫');
외부에서 변경이 불가능하게 만들고싶다?

접근제어자 - 캡슐화

내부상으로 필요한 데이터를 외부에서 보이지 않도록 숨겨놓는다.

일반적으로 아무것도 붙이지 않은 코드는 public이고,
앞에 #을 붙이면 private가 된다.

class Milk {
  #taste; //외부로 부터 받아옴(생략가능)
  #emoji; //외부로 부터 받아옴(생략가능)
  #type = "우유"; //클래스가 만들어지자 마자 우유로 초기화가 됨
  // 생성자
  constructor(taste, emoji) {
    this.#taste = taste;
    this.#emoji = emoji; 
  }
  display(){
    console.log(`${this.#taste}: ${this.#emoji}`);
  }  
  
}
const choco = new Milk('chocolate', '🍫');

console.log(choco);

#을 붙여서 private하게 만들게 되면 console.log에서 내용이 나오지 않게 된다.

class Milk {
  #taste; //외부로 부터 받아옴(생략가능)
  #emoji; //외부로 부터 받아옴(생략가능)
  #type = "우유"; //클래스가 만들어지자 마자 우유로 초기화가 됨
  // 생성자
  constructor(taste, emoji) {
    this.#taste = taste;
    this.#emoji = emoji; 
  }
  display(){
    console.log(`${this.#taste}: ${this.#emoji}`);
  }  
  
}
const choco = new Milk('chocolate', '🍫');
choco.#name = '복숭아';

console.log(choco);

#feild는 외부에서 접근이 불가능 하다고 에러가 난다.

profile
자라나라 나무나무

0개의 댓글