class field

lee jae hwan·2022년 7월 28일

javascript

목록 보기
54/107

class field는 곧 표준화될 문법이다.

class field는 public, private field 2가지가 있으며 데이터프로퍼티를 만든다.

class User{
  name; // public class field
  #age; // private class field
  constructor(){
    this.name='lee';
    this.#age=45;
  }
  getAge(){
    return this.#age;
  }
}

let user = new User();
console.log(user.#age); // SyntaxError
console.log(user.age); // undefined

private class field에 #을 붙이고 내분에서 #을 붙여 사용하면 되고 외부에서 속성접근자에 #을 붙이면 SyntaxError가 발생한다.


class field는 객체마다 만들어지는 프로퍼티다.

class User {
  name = prompt("이름을 알려주세요.", "보라");
}
let user = new User();
alert(user.name); // 보라

클래스필드에 복작한 표현식이나 함수를 사용할 수 있다.


class field에 화살표함수 + this 가 사용되면 바인딩된다.

class User{
  #firstname;
  #lastname;  
  constructor(firstname, lastname){
    this.#firstname=firstname;
    this.#lastname=lastname;
  }
  getFullname=()=>`${this.#firstname} ${this.#lastname}`;
}

let user = new User('lee', 'jh');
console.log(user.getFullname());

getFullname 클래스필드에 화살표함수를 사용하면 객체마다 메소드가 생성되며 화살표함수내 this는 생성객체로 바인딩된다.




class Animal {
  name = 'animal';
  constructor() {
    console.log(this.name);
  }
}

let ani = new Animal();

객체생성시 클래스필드는 constructor가 실행될때 가장 먼저 프로퍼티로 처리된다.

0개의 댓글