ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹개발13 - 프로토타입
    비전공자 공부일기/:: WEB & Front-End 2019. 6. 20. 17:07

    2019. 06. 20 개인공부

     

    자바스크립트에 대한 정보를 검색하던 중 이런 설명을 발견했다. 바로 자바스크립트는 클래스기반 언어인 자바와는 달리 '프로토타입 기반의 객체지향언어'라는 것이다. 프로토타입? 이게 뭐지. 찾아봐도 한눈에 들어오질 않아 좀 더 공부를 해보게 되었다.

    일단 '프로토타입'이란 말은 꼭 프로그래밍 외적으로도 일상생활에서 많이 들어본 말일 것이다.(아마 건담이나 에바 덕후라면 더욱 익숙하지 않을까..?) 보통 '초기모델'정도의 뜻으로 많이 쓰이는 것 같다.


    내가 찾은 바에 따르면(ㅋㅋ), 자바스크립트의 모든 객체는 프로토타입(prototype)이라는 객체를 가지고 있다. 그리고 모든 객체는 그들의 프로토타입으로부터 프로퍼티와 메소드를 상속받는다.

    이처럼 자바스크립트의 모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며, 이때 상속되는 정보를 제공하는 객체를 프로토타입(prototype)이라고 한다.


    더 자세한 이해를 위해 자바스크립트에서 사용되는 '프로토타입' 관련한 용어들을 짚고 넘어가자.

    1. __proto__ : 상위에서 물려 받은 객체의 프로토타입에 대한 정보 (prototype link) -- 자신을 만들어낸 객체의 원형

    2. prototype : 자신의 하위객체들에 물려줄 프로토타입의 정보 (prototype object) -- 자신을 통해 만들어질 객체의 원형

    3. prototype chain : __proto__ 속성을 통해 상위 프로토타입과 연결되어있는 형태, 혹은 연결이 이어진 관계

    프로토타입 체인을 통해 자바스크립트 내부에서는 객체를 찾아야 할 때 하위에서 최상위(Object)까지 탐색하는데, 대상을 찾는 순간 탐색은 멈추게 되지만 없는 대상을 찾다가 object까지 가게 되면 undefined가 뜨거나 오류가 발생한다.



    내가 찾은 프로토타입에 대한 개념설명

    ·  객체마다 메소드를 만들어 쓰면 비효율적이므로 하나의 메소드를 생성하여 모든 객체가 공유해서 사용할 수 있도록 하는 방식의 메소드
    ·  생성자에 의한 객체 생성시 메모리낭비를 줄이기 위해 사용하는 메소드들의 집합
    ·  객체의 모양을 가진 틀(붕어빵: 객체 / 빵틀: 프로토타입 / new연산자: 객체를 찍어내는 명령)
    ·  자신을 만들어낸 객체의 원형

    참고한 블로그 :
    https://jundol.kr/6  
    http://tcpschool.com/javascript/js_object_prototype  

    https://medium.com/@bluesh55/javascript-prototype-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-f8e67c286b67

    이런 설명들을 종합해보면 프로토타입은 '자바에서 클래스와 비슷한 개념'으로 이해된다.

     

    프로토타입의 특징
    ·  프로토타입은 함수로 만듦
    --- 프로토타입을 만들 때 사용하는 함수를 생성자 함수(constructor)라고 부르는데, new 연산자로 객체가 생성될 때 호출되는 함수이기 때문이다.
    --- 생성자(constructor) : 자신을 만들어낸 객체와 연결된 속성
    ·  new 연산자로 객체를 생성하고 활용

     

    댓글

coding wanee