JavaScript_Study [ Object-Oriented Programming (자바스크립트 객체지향 프로그래밍) ]

이준석·2023년 4월 10일
0

JavaScript_Study

목록 보기
14/35
post-thumbnail

2021-08-28 노션페이지,
2021-09-26 노션페이지
기록된 노션을 다시 정리

객체지향의 특성

  • 객체지향 프로그래밍은 보다 유연하고 유지보수하기 쉬우며 확장성 측면에서서도 유리한 프로그래밍을 하도록 의도되었다.
  • 객체 지향 프로그래밍의 4가지 특징은 각각 추상화, 상속, 다형성, 캡슐화

객체(object)란?

상태와 행동을 구분 지을 수 있는 것.

클래스 기반 VS 프로토타입 기반

  • JavsScript는 프로토타입 기반이므로 프로토타입 기반
  • ... ES6 부터 클래스 문법 도입 (내부는 프로토 타입 기반 패턴)

프로토타입 기반 언어

JavaScript 객체 생성 및 특징

생성자 함수와 인스턴스의 생성

  • 해당 방법은 동일한 프로퍼티들을 가진 객체가 다량 생성이 필요할 때 유리하다
// 생성자 함수(Constructor)
function Person(name) {
  // 프로퍼티
  this.name = name;

  // 메소드
  this.setName = function (name) {
    this.name = name;
  };

  // 메소드
  this.getName = function () {
    return this.name;
  };
}

위의 생성자 함수로 인스턴스 생성 시 각각의 인스턴스에 메소드 setName, getName이 중복되어 생성된다.
=> 메모리 낭비


해결 방법
프로토타입을 이용
=> 생성자 함수의 prototype 프로퍼티가 가리키는 프로토타입 객체로 메소드를 정의한다.

function Person(name) {
  this.name = name;
}

// 프로토타입 객체에 메소드 정의
Person.prototype.setName = function (name) {
  this.name = name;
};

// 프로토타입 객체에 메소드 정의
Person.prototype.getName = function () {
  return this.name;
};

var me  = new Person('Lee');
var you = new Person('Kim');
var him = new Person('choi');

상속

  • 자바스크립트의 상속 구현 방식은 크게 두 가지로 구분할 수 있다.
    • 의사 클래스 패턴 상속 (클래스 기반 언어의 흉내)
      • ES6 부터 클래스 문법이 나와 흉내내지 않고 그대로 사용 가능
    • 프로토타입 패턴 상속
      • 프로토타입 패턴 상속은 Object.create 함수를 사용하여 객체에서 다른 객체로 직접 상속을 구현하는 방식이다.

캡슐화

  • 관련있는 멤버 변수와 메소드를 클래스와 같은 하나의 틀 안에 담는 것
  • 외부에 공개될 필요가 없는 정보는 숨기는 것
    • 자바스크립트는 public 또는 private 등의 키워드를 제공하지 않았다.
    • 하지만 클로저 등을 통해 정보 은닉을 구현 했다
      => 클래스 기능 도입으로 다른 방식도 생겨났다.

참조: poiemaweb.com

0개의 댓글