본문으로 바로가기


클래스 기반(일반 언어)과 프로토타입 기반 비교




클래스 기반(일반 언어)

Java
/* 1단계 : 클래스 정의 */
public class Prisoner {
   public int setence = 4;
   public int probation = 2;
   public string name;
   public string id;

   /* 2단계 : 클래스 생성자 정의*/
   public Prisoner(string name, string id) {
      this.name = name;
      this.id = id;
   }
}

/* 3단계 : 객체 생성 */
Prisoner firstPrisoner = new Prisoner("Joe", "12A");
Prisoner secondPrisoner = new Prisoner("Sam", "2BC");




프로토타입 기반(자바스크립트)

JavaScript
/* 1단계 : 프로토타입 객체 정의 */
var proto = {
   sentence : 2,
   probation : 2
};

/* 2단계 : 객체 생성자 정의 */
var Prisoner = function(name, id) {
   this.name = name;
   this.id = id;
}

/* 3단계 : 생성자와 프로토타입 객체 연결 */
Prisoner.prototype = proto;

/* 4단계 : 객체 생성 */
var firstPrisoner = new Prisoner("Joe", "12A");
var secondPrisoner = new Prisoner("Joe", "12A");


두가지 방식 모두 먼저 객체 템플릿을 만들었습니다. 클래스 기반 프로그래밍에서는 이런 템플릿을 클래스라 부르고 프로토타입 기반 프로그래밍에서는 이를 프로토타입 객체라고 부르지만 두 템플릿의 목적은 모두 같습니다.

바로 객체를 생성할 수 있는 프레임워크 역할을 하는 것입니다.


두번재로 생성자를 만들었고 클래스 기반 언어에서는 객체를 생성할 때 생성자가 어떤 클래스에 속하는지 명확히 알 수 있도록 생성자를 클래스 내부에 정의합니다. 자바스크립트에서는 객체 생성자를 프로토타입 외부에서 설정하고 있기 때문에 둘을 서로 연결해 주는 단계(3단계)가 필요합니다. 마지막으로 객체를 생성합니다.



Jaehee's WebClub