프로토타입 뜻 -> 원형..
..?
일단 정의말고 이해해보기
function machine () {
this.a = "커피추출"
this.b = "머신청소"
}
var cafe = new machine()
하면 cafe를 찍었을때, 부모인 머신이 가지고 있는 a,b를 자식인 cafe도 가지고있다.
같은 기능으로 사용할 수 있는 프로토타입,
프로토타입도 {object}자료 이기때문에 데이터 추가가 가능하다
machine.prototype.name = '라떼'
이렇게 추가하면,
cafe에도 .name에도 추가된다. -> cafe.name하면 라떼가 찍힌다.
근데! 커피추출, 머신청소는 자식도 그대로 상속되서 가지고 있지만 프로토타입으로 추가된 데이터는 부모만 가지고 있는다.
*prototype chain - (자식이 부모를 참조할 때, 부모에게도 없으면 부모의 부모도 참조하고 그 부모도 참조하고 계속 참조하는 것)
개발자도구에서 array.prototype을 찍어보면 어레이에서 사용할 수 있는 여러가지 메쏘드나 프로퍼티들이 나온다.
즉! 부모 객체의 프로퍼티나 메쏘드를 상속받아 사용할 수 있는데 부모 객체를 프로토타입이라 한다!