• 프로토타입이란?

    -한 객체의 기반이 되는 객체를 의미합니다.

    -객체를 생성하면서, 다른 객체를 기반으로 추가적인 작업을 한 새 객체가 생성될때

    -기반이 된 객체를 프로토타입이라고 합니다.

  • 프로토타입 기반 프로그래밍이란, -객체가 다른 객체를 기반으로 생성되고, 재사용이 가능하도록 지원하는 프로그래밍 입니다.

  • 자바스크립트의 프로토타입 기반 프로그래밍이란 -Object 객체를 최초의 프로토타입으로 하여, 모든 객체가 Object 로부터 시작된 프로토타입을 원형으로 가지는것 입니다.

    -하나의 객체만을 놓고 보면, 프로토타입은 객체의 모든 인스턴스가 공유하는 객체입니다.

    -모든 인스턴스가 프로토타입의 내용을 복제하여 메모리를 점유할 필요가 없기 때문에 효율적이며, 프로토타입의 내용이 바뀌면 모든 인스턴스에 즉시 반영되기 때문에 일관성을 유지하면서 모든 객체를 런타임중에도 수정할 수 있습니다.

    -이러한 프로토타입을 다른 객체와 공유하여, 공유받은 객체를 생성할때도 역시 생성비용을 절감하는 효과를 가지며, 공유받은 객체 또한 일관성을 유지하면서 런타임중에도 수정될 수 있습니다.

    -이러한 프로토타입의 공유를 통해 다른 언어들의 상속과 같은 효과를 가집니다.

  • 클래스와 다른점.

    -클래스는 코드영역(메서드영역) 이라고 부르는 메모리공간에서 상속 관계인 설계도들을 모으고, 그 내용이 모두 들어있는 하나의 객체를 생성합니다. -완전히 같은 객체를 여러개 만드는 시나리오에서 둘의 차이점을 알 수 있습니다.

    -클래스 기반에서는 설계도로부터 만들어진 완전히 같은 객체들이 여러개 생성됩니다.

    -프로토타입 기반에서는 원형이 되는 객체 하나가 만들어지고, 원형을 참조하며 추가적인 내용만을 가진 객체들이 여러개 생성됩니다.