[TIL] 0628

yoon Y·2022년 6월 29일
0

2022 - TIL

목록 보기
101/109

자바스크립트의 객체 지향

자바스크립트 탄생

  • 함수형으로 만들고 싶었으나 그 당시 주류였던 객체 지향을 무시할 수 없어
    최대한 간결한 방법으로 객체지향(상속, 추상화, 다형성)을 할 수 있도록 함.
  • no class언어, 상속이 아닌 공유.
  • 객체지향+함수형의 멀티 패러다임.

객체를 생성하는 방법

객체지향 언어

  • class를 선언해야만 생성할 수 있다.

자바스크립트

  • 객체 리터럴로 바로 생성할 수 있다.
    • 객체 리터럴로 생성 시 메소드에서 프로퍼티를 사용하려면 this를 사용하도록 함.
  • function과 new를 이용한 생성.
    • 데이터는 this로 할당
    • 함수는 prototype객체에 할당.
  • 이후 2번 방법이 너무 복잡해 객체지향 class처럼 사용할 수 있는 Class라는 신문법 등장

상속 하는 방법

객체지향 언어

  • class가 통째로 복사된다.
  • 물려받은 class를 자식 class에서 실행해 데이터, 함수를 그대로 반환받아 사용.

자바스크립트(복잡..)

  1. 객체리터럴의 경우
  • 상속받고싶은 object를 찾아가서 사용하기
  • 객체의 proto속성으로 상속받을 객체를 연결
  1. 생성자 함수의 경우
  • 상속받고 싶은 생성자함수의 prototype객체를 자신의 prototype객체의 proto속성과 연결
  1. Class의 경우
  • extend키워드를 사용하면 쉽게 2번을 구현할 수 있음.

JS의 객체지향, 함수형 프로그래밍의 차이

객체지향으로 프로그래밍하기

객체에 데이터와 그 데이터를 사용하는 메소드를 저장해 사용.

함수형으로 프로그래밍하기

데이터를 따로 관리하고, 그 데이터를 사용하려는 함수에 인자로 전달해서 사용.
데이터가 참조타입일 경우 프로퍼티에 직접 접근해서 연산하면 안되고, 새로운 객체로 만들어서 반환해야함 -> 이 특성 때문에 파이프라인 형태의 연속적인 연산을 할 수 있는 것.


출처
자바스크립트에서 객체지향을 하는게 맞나요?
Javascript - 객체지향 프로그래밍과 함수형 프로그래밍의 차이




자바스크립트에서 객체지향은 어떻게 하는 거고,
일반적인 객체지향과의 차이는 뭐고,
객체지향으로 프로그래밍하는 것과 함수형으로 프로그래밍하는 것의 차이가 무엇인지 공부했다.

내가 계속 헷갈렸던 것의 원인을 찾았다.
다른 언어에서는 js처럼 객체 리터럴로 객체를 직접 작성할 수 없고 꼭 class를 이용한 객체 선언이나 구조체 선언 과정을 거쳐야한다는 것을 몰랐다.

의문이 풀렸던 부분은
객체 지향은 객체에 관련된 데이터와 메소드를 함께 저장해서 사용/관리하는 것이고,
함수형은 데이터와 함수를 따로 관리하고, 함수에 데이터를 인자로 받아서 사용하는 차이라는 것.

자바스크립트가 왜 자유로운 영혼이라고 하는지 알겠다.

profile
#프론트엔드

0개의 댓글