스크랩

클래스 기반 언어 vs. 프로토타입 기반 언어

미래에서 온 개발자 2022. 12. 6. 20:16
 

자바스크립트는 왜 프로토타입을 선택했을까

프로토타입으로 검색하면 으레 나오는 서두처럼 저 또한 자바스크립트를 처음 접했을 때 가장 당황스러웠던 게 프로토타입이었습니다.

medium.com

 

한줄평: 클래스와 프로토타입의 차이를 아주 근원으로 올라가 서양 철학으로 풀어낸 최고의 포스팅 👏🏼👏🏼👏🏼

 

1. 클래스 기반 언어 (대표적인 언어: Java)

 : 소크라테스의 이데아를 구현한 프로그래밍 언어

 

2. 프로토타입 기반 언어 (대표적인 언어: JavaScript) 

 : 비트겐슈타인의 의미사용론(단어는 사용에 의해 의미가 결정되기 때문에 맥락context이 중요하다는 이론)을 구현한 프로그래밍 언어 

 

 

💡 자바스크립트의 주요 개념 정리 

 

- 호이스팅: 실행 컨텍스트 생성시 렉시컬 스코프 내의 선언이 끌어올려지는 것

- 렉시컬 스코프: '단어의 의미가 사용되는 근처 환경'에서 '근처'를 의미 

 

자바스크립트 엔진은 코드가 로드될 때 실행 컨텍스트를 생성하고 그 안에 선언된 변수, 함수를 실행 컨텍스트 최상단으로 호이스팅한다. 이러한 범위를 렉시컬 스코프라고 한다. 

 

프로토타입에서는 받아들이는 주체와 문맥이 가장 중요하다. 프로그래밍으로 보자면 실행(invoke)하는 '객체'가 중요하다. 따라서 프로토타입 기반 언어에서는 this가 정의된 함수가 어떻게 발화(invoke) 되었는지에 따라 가리키는 값이 달라진다. 정확히는 받아들이는 대상의 컨텍스트를 가리킨다.