ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스 (1)
    Front-end/Javascript 2022. 4. 28. 13:41

    클래스의 정의

    class 키워드를 사용하여 정의한다. 

    일반적이진 않지만 표현식으로 클래스를 정의할 수 있다. 즉, 클래스가 값으로 사용할 수 있는 일급 객체라는 것을 의미한다.

     

    클래스 호이스팅

    클래스 선언문도 호이스팅이 발생한다. 단, let,const 키워드로 선원한 변수처럼 호이스팅되기 때문에 호이스팅이 발생하지 않는 것처럼 동작한다. 

     

    인스턴스 생성

    클래스 표현식으로 정의된 경우 클래스를 가리키는 식별자를 사용해 인스턴스를 생성해야한다. 표현식에서 사용한 클래스 이름은 외부 코드에서 접근이 불가능하기 때문이다.

    (함수 표현식으로 표현한 함수 이름은 함수 몸체 내부에서만 유효한 식별자이므로 함수 이름으로 호출시 Reference Error가 발생한다) 

     

    메서드 

    클래스의 몸체에서 정의할 수 있는 메서드는 constructor, 프로토타입 메서드, 정적 메서드 세가지가 있다. 

    • constructor
      • constructor는 인스턴스를 생성하고 초기화하기 위한 특수한 메서드다. (이름 변경이 불가능하다) 
      • 클래스 내에 최대 한 개만 존재할 수 있다.  
      • constructor를 생략하면 클래스에 빈 constructor가 암묵적으로 정의된다. 
      • constructor는 new 연산자와 함께 클래스가 호출되면 this, 즉 인스턴스를 반환한다.
        • 명시적으로 객체를 반환하면 암묵적인 this 반환이 무시되나, 원시값을 반환하면 this가 반환된다. 
      • 클래스도 함수 객체 고유의 프로퍼티를 모두 갖고 있다. constructor 프로퍼티는 클래스 자신을 가리키고있다. => 이는 클래스가 인스턴스를 생성하는 생성자 하는 생성자 함수라는 것을 의미한다. 

     

    • 프로토타입 메서드
      • 생성자 함수를 사용하여 인스턴스를 생성하는 경우 프로토타입 메서드를 생성하기 위해서 명시적으로 프로토타입에 메서드를 추가해야한다.  이와 반대로 클래스 몸체에서 정의한 메서드는 prototype 프로퍼티에 메서드를 추가하지 않아도 기본적으로 프로토타입 메서드가 된다. (인스턴스의 프로토타입에 존재하는 프로토타입 메서드) 
    • 정적 메서드 
      • 정적 메서드는 인스턴스를 생성하지 않아도 호출할 수 있는 메서드를 말한다.
      • 생성자 함수의 경우 명시적으로 생성자 함수에 메서드를 추가해야 한다. 
      • 클래스에서는 메서드에 static 키워드를 붙이면 정적 메서드가 된다. (클래스에 바인딩된 메서드)
    • 정적 메서드와 프로토타입 메서드의 차이
      • 정적 메서드와 프로토타입 메서드는 자신이 속해있는 프로토 타입 체인이 다르다
      • 정적 메서드는 클래스로 호출하고 프로토타입 메서드는 인스턴스로 호출한다 
      • 프로토타입 메서드는 인스턴스 프로퍼티를 참조할 수 있다 

    'Front-end > Javascript' 카테고리의 다른 글

    클래스 (3)  (0) 2022.04.29
    클래스 (2)  (0) 2022.04.29
    클래스와 생성자 함수  (0) 2022.04.28
    화살표 함수  (0) 2021.05.03
    Promise.all([ ])과 Promise.race([ ])  (0) 2021.04.29
Designed by Tistory.