tech.junha.kr

프로토타입: 자바스크립트의 핵심 철학

자바스크립트는 프로토타입 기반 OOP 언어다.

자바스크립트는 분류 위주 클래스 방식의 언어인 JAVA에서 객체를 바라보는 관점과 완전히 다르다. 특히 문맥(context)을 매우 강조하는 철학적 근거에서 만들어져 렉시컬 스코프에 의한 호이스팅과 실행 문맥에 의한 복잡한 this가 필연적으로 발생할 수밖에 없었다.

비트겐슈타인의 두 가지 이론

  1. 의미사용이론: 단어의 의미는 ‘상황과 맥락에 의해서 결정된다'. 단어의 ‘진정한 본래의 의미'란 존재하지 않는다.
  2. 가족유사성이론: 프로토타입 언어에서는 정의로 부터 분류하지 않는다. 가장 좋은 보기(prototype, exemplar)로부터 범주화된다.

의미사용이론

어휘적 범위(lexical scope): 의미사용이론에 따르면 단어의 의미는 그 어휘적인, 근처 환경에서의 의미가 된다. 이는 Javascript에 다음처럼 적용된다. 변수의 의미는 그 어휘적인(Lexical), 실행 문맥(Execution Context)에서의 의미가 된다. 그렇기 때문에 동일 범위(실행 문맥)의 모든 선언을 참고(호이스팅)해 의미를 정의합니다.
호이스팅은 ‘코드가 로드될 때 선언 부가 끌어올려진다'라고 말하지만, 정확한 답변은 **‘실행 컨텍스트 생성 시 렉시컬 스코프 내의 선언이 끌어올려진다'**라고 말하는 것이 정확하다.


Reference

https://medium.com/@limsungmook/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%8A%94-%EC%99%9C-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85%EC%9D%84-%EC%84%A0%ED%83%9D%ED%96%88%EC%9D%84%EA%B9%8C-997f985adb42

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

https://blog.naver.com/jeeloh/220832729596

범주화 (Categorisation), 원형 (Prototype)