****MDN을 참고하여 작성했다
Javascript는 객체를 상속하기 위해 프로토타입이라는 방식을 사용한다.
모든 객체들이 메소드와 속성들을 상속 받기 위한 템플릿으로써 프로토타입 객체(prototype object)를 가진다는 의미
정확히 말하자면 상속되는 속성과 메소드들은 각 객체가 아니라 객체의 생성자의 prototype이라는 속성에 정의되어 있습니다.
사실 잘 모르겠다.. 실습해보면서 이해해야겠다...
class Human {
constructor(name, age) {
this.name = name;
this.age = age;
}
sleep() {
console.log(`${this.name}은 잠에 들었습니다`);
}
}
let kimcoding = new Human('김코딩', 30);
Human이라는 클래스를 구현했다.
Human.prototype.constructor === Human;
Human.prototype === kimcoding.__proto__;
Human.prototype.sleep === kimcoding.sleep;
위와 같이 입력했을 때 어떤 결과가 나올까..?

모두 true값으로 반환한다.

내가 이해한 바로는
Human.prototype.constructor은 Human이라는 클래스 안에 constructor 함수와 prototype 객체가 있는데 인스턴스를 생성하면 클래스의 모든 것을 참조해간다. 하지만 메소드를 사용할 때는 클래스의 prototype 객체에서 참조해온다.
__proto__ 를 통해 원본 클래스의 prototype 객체에 접근할 수 있다.
내가 이해한게 맞는건지 확신이 서지 않는다... 쫌 더 자료들을 찾아보고 읽어봐야겠다..