자바스크립트의 객체 지향
자바스크립트 탄생
- 함수형으로 만들고 싶었으나 그 당시 주류였던 객체 지향을 무시할 수 없어
최대한 간결한 방법으로 객체지향(상속, 추상화, 다형성)을 할 수 있도록 함.
- no class언어, 상속이 아닌 공유.
- 객체지향+함수형의 멀티 패러다임.
객체를 생성하는 방법
객체지향 언어
자바스크립트
- 객체 리터럴로 바로 생성할 수 있다.
- 객체 리터럴로 생성 시 메소드에서 프로퍼티를 사용하려면 this를 사용하도록 함.
- function과 new를 이용한 생성.
- 데이터는 this로 할당
- 함수는 prototype객체에 할당.
- 이후 2번 방법이 너무 복잡해 객체지향 class처럼 사용할 수 있는 Class라는 신문법 등장
상속 하는 방법
객체지향 언어
- class가 통째로 복사된다.
- 물려받은 class를 자식 class에서 실행해 데이터, 함수를 그대로 반환받아 사용.
자바스크립트(복잡..)
- 객체리터럴의 경우
- 상속받고싶은 object를 찾아가서 사용하기
- 객체의 proto속성으로 상속받을 객체를 연결
- 생성자 함수의 경우
- 상속받고 싶은 생성자함수의 prototype객체를 자신의 prototype객체의 proto속성과 연결
- Class의 경우
- extend키워드를 사용하면 쉽게 2번을 구현할 수 있음.
JS의 객체지향, 함수형 프로그래밍의 차이
객체지향으로 프로그래밍하기
객체에 데이터와 그 데이터를 사용하는 메소드를 저장해 사용.
함수형으로 프로그래밍하기
데이터를 따로 관리하고, 그 데이터를 사용하려는 함수에 인자로 전달해서 사용.
데이터가 참조타입일 경우 프로퍼티에 직접 접근해서 연산하면 안되고, 새로운 객체로 만들어서 반환해야함 -> 이 특성 때문에 파이프라인 형태의 연속적인 연산을 할 수 있는 것.
출처
자바스크립트에서 객체지향을 하는게 맞나요?
Javascript - 객체지향 프로그래밍과 함수형 프로그래밍의 차이