프로토타입에 대하여 학습

최정석·2022년 5월 25일
0

프로토타입

  • Javascript에서는 객체를 상속하기 위하여 프로토타입이라는 방식을 사용
  • 모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)
    를 가진다는 의미
class Human {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }

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

let kimcoding = new Human('김코딩', 30);
  • 상속되는 속성과 메소드들은 객체의 생성자의 prototype이라는 속성에 정의되어 있습니다.

🧑🏻‍💻 위에서 kimcoding. 을 콘솔창에 입력하면
Human() 에 정의된 sleep 을 볼 수 있다.
또한 Human() 의 프로토타입 객체인 Object 에 정의된
다른 멤버들도 볼 수 있다.
이는 프로토타입 체인이 동작한다는 증거이다.


.prototype

  • prototype 속성도 하나의 객체이며 프로토타입 체인을 통해 상속하고자 하는 속성과 메소드를 담아두는
    버킷으로 주로 사용되는 객체
  • Object.prototype을 상속 받는 객체라면 어떤 객체에서든지 접근할 수 있다.

.proto

  • .__proto__ (앞뒤로 언더바 2개씩) 속성을 통해 특정 객체의 프로토타입 객체에 접근할 수 있도록 구현
Human.prototype.constructor === Human; // true
Human.prototype === kimcoding.__proto__; // true
Human.prototype.sleep === kimcoding.sleep; // true

🧑🏻‍💻 클래스 Human과 인스턴스 steve, 프로토타입

프로토타입을 학습하면서 그동안 mdn에 내가 모르는 메서드의 사용법을 검색할 때

왜 prototype이 계속 나온지 이해가 되는 것 같다.
쉽게 생각해서 가장 큰 부모인 Object가 상속할 수 있는 속성이나 메소드를 상속 받아서 사용하기 때문에 있는 것 이라고 이해했다.

이는 프로토타입 체인이 동작한다는 의미이기도 하다.

😍 제가 혹시 잘 못 이해하고 기록한게 있다면 댓글로 알려주시면
정말 좋은 공부가 될 것 같습니다! 감사합니다~~

0개의 댓글