똑같은 메서드를 가지는 객체가 여러개일때,
// 생성자 함수
function Circle (radius) {
this.radius = radius,
this.getArea = function (radius) {
return Math.PI * radius ** 2;
}
}
const circle1 = new Circle(1);
const circle2 = new Circle(2);
// 생성자 함수
function Circle(radius) {
this.radius = radius;
}
/*
Circle 생성자 함수가 생성한 모든 인스턴스가
getArea 메서드를 공유해서 사용할 수 있도록
프로토타입에 추가한다.
*/
Circle.prototype.getArea = function () {
return Math.PI * this.radius ** 2;
}
// 인스턴스 생성
const circle1 = new Circle(1);
const circle2 = new Circle(2);
// getArea는 Circle를 가지고 있고 circle1은 참조만 하고 있지만 , 자신의 메서드인것처럼 호출할 수 있음
circle1.getArea(); // 3.131592...
[1] proto 는 접근자 프로퍼티
[2] proto 접근자 프로퍼티는 상속을 통해 사용
[3] proto 접근자 프로퍼티를 이용해서 prototype에 접근하는 이유?
: 순환참조가 되면 안되기 때문에! (순환참조가 되면 종점이 없기 때문에)
[4] 코드 내에서 proto 접근자 프로퍼티를 사용하는 것을 권장하지 않음
: proto 는 표준이긴 하나 권장하지 않으며 사라질 예정임
대신에 .getPrototypeOf 를 사용해라