프로토타입, 프로토타입 체인과 클래스

1abme·2023년 3월 15일
0

JavaScript

목록 보기
4/5

prototypes


javascript 에서 생성된 객체들은 모두 prototype을 지니게 된다. 프로토타입(Prototype)은 원형 객체를 말한다.이는 일종의 유전자인 셈으로 객체들은 각자의 부모객체와 연결되어 있으며 부모객체의 속성과 메서드를 상속받는다.

.prototype


.prototye 을 사용하면 상속을 부여하거나 수정할 수 있으며 이를 이용한 방식은 '클래스와 인스턴스' 글의 '클래스: 메소드 정의'의 ES5문법을 적용한 예 에서 찾아 볼 수 있다.


클래스 메소드의 예)

//ES5문법을 적용한 예
function Car(brand, name, color) {
  	this.brand = brand;
    this.name = name;
    this.color = color;
}

//.prototype을 이용한 일종의 상속 부여
Car.prototype.drive = function() { 
  return '아반떼가 운전을 시작합니다';
}

let avante = new Car ('hyundai','avante','black');
avante.drive(); // 아반떼가 운전을 시작합니다.

프로토타입을 통해 클래스 메서드를 정의한 후 인스턴스로 생성한 자식객체인 avante의 .drive()를 실행하는 코드이다.

.proto


.__proto__ 을 통해 객체의 부모객체와 상속정보, 메서드 정보를 알 수 있다. 일종의 부모객체의 링크 같은 셈이다.

class Human {
  constructor(name, age) { 
    this.name = name;
    this.age = age;
  }

  sleep() {
    console.log(`${this.name}은 잠에 들었습니다`);
  }
}

let kimcoding = new Human('김코딩', 30);


Human.prototype.constructor === Human; // true
Human.prototype === kimcoding.__proto__; //true 
Human.prototype.sleep === kimcoding.sleep; //true

Prototype chain


Javascript 에서 객체 지향 프로그래밍의 특성인 상속을 구현시 프로토타입 체인을 사용한다. 일종의 부모객체와 자식객체는 유전적으로 이어져있으며 이를 타고 올라가면 부모의 부모 , 부모의 부모의 부모... 처럼 계속 타고 올라가 찾아볼 수 있는 형식이다. Prototype chain으로 이어진 모든 클래스의 조상으로는 Object 가 존재한다.

profile
제가 이해하고 있는게 맞나요...?

0개의 댓글

관련 채용 정보