프로토타입
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
속성도 하나의 객체이며 프로토타입 체인을 통해 상속하고자 하는 속성과 메소드를 담아두는Object.prototype
을 상속 받는 객체라면 어떤 객체에서든지 접근할 수 있다..__proto__
(앞뒤로 언더바 2개씩) 속성을 통해 특정 객체의 프로토타입 객체에 접근할 수 있도록 구현Human.prototype.constructor === Human; // true
Human.prototype === kimcoding.__proto__; // true
Human.prototype.sleep === kimcoding.sleep; // true
🧑🏻💻 클래스 Human과 인스턴스 steve, 프로토타입
프로토타입을 학습하면서 그동안 mdn에 내가 모르는 메서드의 사용법을 검색할 때
왜 prototype이 계속 나온지 이해가 되는 것 같다.
쉽게 생각해서 가장 큰 부모인 Object가 상속할 수 있는 속성이나 메소드를 상속 받아서 사용하기 때문에 있는 것 이라고 이해했다.
이는 프로토타입 체인이 동작한다는 의미이기도 하다.
😍 제가 혹시 잘 못 이해하고 기록한게 있다면 댓글로 알려주시면
정말 좋은 공부가 될 것 같습니다! 감사합니다~~