함수.prototype
, 객체.__proto__
(dunder proto)로 접근 가능하다.프로토타입 객체가 뭔지.
프로토타입
프로토타입 체이닝, 왜 가능해지는지
scope chaining처럼, 메서드 혹은 속성을 찾지 못했을 경우 상위 프로토 타입을 참조하는 것.
var car = function (loc) {
var obj = { loc: loc };
obj.move = function () {obj,loc++ };
return obj;
}
var Van = function (loc) {
//super class의 instance에 이 subclass만의 method를 할당.
var obj = Car(loc);
obj.grab = function () { ... };
return obj;
}
var Cop = function (loc) {
var obj = Car(loc);
obj.cal = function () { ... };
return obj;
}
쓸모없는 메모리 소모가 많아짐. > 각 function마다 함수들을 다 만들기 때문이다.
ES6에서 class가 생기기 전에 subclass를 구현하기 위해 만들었던 방법
line up: 반드시 상속을 이용하여 구현해야 함.
hint: 무조건 그대로 사용하기보다는 필요하다면 자식클래스에서 메서드 확장을 통해
화살표 함수와 무명함수는 this바인딩이 다르기 때문에 사용되는 부분이 다르다.