[SEB_FE_44] JS(14) - 객체지향 프로그래밍

유영준·2023년 3월 15일
0
post-thumbnail

오늘 배운 주제


  • 클래스와 인스턴스
  • 프로토타입

오늘 배운 내용


  • 클래스와 인스턴스

클래스는 객체를 생성하기 위한 템플릿

비슷한 성질을 가진 여러개의 객체를 만들기 위해, 일종의 설계도(클래스)를 사용하여 생성한 객체를 인스턴스라고 함

ex)
하나의 모델이 되는 청사진 = 클래스
그 청사진을 바탕으로 한 객체 = 인스턴스

  • 캡슐화

데이터와 기능을 하나의 단위로 묶는 것

캡슐화를 왜 할까요?
가장 중요한 이유는 "정보은닉" 때문

정보은닉이란, 객체에 대한 구체적인 정보를 노출시키지 않도록 하기 위한 기법

  • 추상화

추상화의 장점
1. 사용자가 낮은 수준의 코드를 작성하지 않도록 도움.
2. 코드 중복 방지 및 재사용성 향상.
3. 사용자에게 영향을 끼치지 않은 채로 독립적으로 클래스의 내부 구현 변경 가능
4. 중요한 세부 정보만 사용자에게 제공하므로 응용 프로그램 또는 프로그램의 보안 향상에 도움

class ImplementAbstraction {
      // method to set values of internal members
      set(x, y) {
        this.a = x;
        this.b = y;
      }

      display() {
        console.log('a = ' + this.a);
        console.log('b = ' + this.b);
      }
    }

    const obj = new ImplementAbstraction();
    obj.set(10, 20);
    obj.display();
    // a = 10
    // b = 20
  • __proto __

모든 객체는 proto 접근자 프로퍼티를 통해 자신의 프로토타입, 즉 [[Prototype]] 내부 슬롯에 간접적으로 접근할 수 있다.

  1. proto 는 접근자 프로퍼티다.

  2. proto 접근자 프로퍼티는 상속을 통해 사용된다.

  3. proto 접근자 프로퍼티를 통해 프로토타입에 접근하는 이유

[[Prototype]] 내부 슬롯의 값, 즉 포로토타입에 접근하기 위해 접근자 프로퍼티를 사용하는 이유는 상호 참조에 의해 프로토타입 체인이 생성되는 것을 방지하기 위해서다.
4. proto 접근자 프로퍼티를 코드 내에서 직접 사용하는 것은 권장하지 않는다.

오늘의 과제


과제는 없다. 하루종일 챕터를 공부하고 블로깅을 하는 시간을 가졌다. 덕분에 시간이 남아 어제 부족한 코플릿을 해결하였다. 정규 시간에 블로깅을 했기 때문에 한번 더 요약해서 블로깅을 함

profile
프론트엔드 개발자 준비 중

0개의 댓글