ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스 개념과 프로토타입 개념
    TodayILearned/TILWIL 2021. 12. 15. 03:39
     

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

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

    medium.com

    위 글에서 클래스, 프로토타입의 기원과 프로그래밍에서의 의미를 잘 설명해주어서 재밌게 읽었다.

    클래스에 대한 문서를 여러번 읽어봐도 의의가 잘 와닿지 않았다.

    왜 사용하는지? 어떤방식에서 필요한지? 

    (함수 대신인가? 라고 생각했음)

    회사 코드에 class를 이용한 코드가 있어서 어떻게 사용해야할 지 애먹기도하고..

    해서 관심있게 찾아보니 마침 회사 뉴스채널에 좋은 글이 올라와서 공유! 


    1. 클래스

    눈앞에 실제로, 구체적으로 존재하는 사물이 있다면 반드시 그것의 본질이 존재한다
    • chair : 이데아에 존재하는 본질적인, 추상적인 의자. 현실세계에 존재하지 않는다
    • a chair, the chair, chairs : 현실 세계에 존재하는 의자

    와 같은 이분법적 사고에 기반 한 것이 클래스의 개념.

    즉, java와 같은 클래스기반의 객체지향 언어에서 클래스는, 실제 메모리상에 존재하지 않는 추상적인 개념.

    이것을 new 키워드를 이용해 실제 메모리상에 인스턴스화하여 메모리에 생성시킨다.

     

    클래스는 일반적인 속성을 기준으로 작성 후, 이외의 특이사항들은 인스턴스화하여 추가하는 개념.

     

    2. 프로토타입

     

    세계에 미리 내재되어서 대상과 언어를 완전히 규정하는 어떤 언어란 존재하지 않는다

     

    이분법적 분류로는 모든것이 분류되지 않는다.절대적인 분류라는건 없다.예를 들어, 모든 게임이 승자와 패자로 나뉘는 것은 아니다. (ex: 텔레스트레이션, 개재밌음 )어휘는 문맥 내에서 다른 의미를 갖게된다.(ex: 잘~한다. 잘한다.)

     

    단어의 ‘진정한 본래의 의미'란 존재하지 않고 ‘상황과 맥락에 의해서 결정된다'

    사물을 분류할 때, 유사성을 가진것을 기준으로 분류하고

    그 중 유사성이 가장 많은것을 원형(Prototype)라고 한다.

    • 현실에 존재하는 것 중 가장 좋은 본보기를 원형(prototype)으로 선택한다.
    • 문맥(컨텍스트)에 따라 ‘범주’, 즉 ‘의미’가 달라진다.

    3. 프로토타입 언어인 자바스크립트에 도대체 왜 ‘실행 문맥', ‘렉시컬 스코프', ‘호이스팅'이 존재하는가

    프로토타입 철학의 근원은 문맥에 따라 달라지는 어휘를 중시한다. 

    그것을 코드상에 구현하기 위해 존재하는 것이 바로 실행문맥, 렉시컬스코프, 호이스팅이다.


    그동안 자바스크립트 인사이드의 객체지향 챕터가 눈에 하도 안들어와서..

    거의 보는둥 마는둥 했는데, 클래스와 프로토타입의 기원을 알게되니 잘 받아들여지는 것 같다.

    왜 사용하는지 알 수 없는것들은 내부적으로 거부감을 갖게돼서 더 그랬던 것 같기도하다.

    자바스크립트의 클래스는 여타 전통 클래스기반 언어와는 다른의미라는것도 잘 정리해서 또 글을 올려봐야겠다.

    또 이런걸 읽으면 역시 프로그래밍 언어도 언어는 언어인 것 같다는 생각이 들었다.

     

    “프로토타입은 자바스크립트에서 상속을 지원하기 위한 방법이다.” 라는 문장의 의미가 잘 와닿지 않아서

    https://youtu.be/DHIlPmJUDzk

    을 들으면서 좀 더 깊게 공부해 볼 예정이다.. 할거 산더미네..

Designed by Tistory.