2021-08-28 노션페이지,
2021-09-26 노션페이지
기록된 노션을 다시 정리
객체지향의 특성
- 객체지향 프로그래밍은 보다 유연하고 유지보수하기 쉬우며 확장성 측면에서서도 유리한 프로그래밍을 하도록 의도되었다.
- 객체 지향 프로그래밍의 4가지 특징은 각각 추상화, 상속, 다형성, 캡슐화
객체(object)란?
상태와 행동을 구분 지을 수 있는 것.
클래스 기반 VS 프로토타입 기반
- JavsScript는 프로토타입 기반이므로 프로토타입 기반
- ... ES6 부터 클래스 문법 도입 (내부는 프로토 타입 기반 패턴)
프로토타입 기반 언어
생성자 함수와 인스턴스의 생성
- 해당 방법은 동일한 프로퍼티들을 가진 객체가 다량 생성이 필요할 때 유리하다
// 생성자 함수(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