function Circle(radius){
this.radius = radius;
this.getArea = function () {
return Math.PI * this.radius ** 2;
};
}
const circle1 = new Circle(1);
const circle2 = new Circle(2);
console.log(circle.getArea === circle2.getArea); // false
console.log(circle1.getArea()); //3.141592.....
console.log(circle2.getArea()); //12.566370...
위 코드의 문제점
프로토타입(prototype)을 통한 중복 제거
function Circle(radius){
this.radius = radius;
}
Circle.prototype.getArea = function () {
return Math.PI * this.radius ** 2;
};
const circle1 = new Circle(1);
const circle2 = new Circle(2);
console.log(circle.getArea === circle2.getArea); // false
console.log(circle1.getArea()); //3.141592.....
console.log(circle2.getArea()); //12.566370...
[[Prototype]]
이라는 내부 슬롯을 가지며, 객체가 생성될때 개개체 생성 방식에 따라 프로토타입이 결정되고 [[Prototype]]
에 저장된다.__proto__
접근자 프로퍼티를 통해 자신의 프로토타입, 즉 [[prototype]]
내부 슬롯에 간접적
으로 접근할 수 있다._proto__
접근자 프로퍼티를 통해 프로토타입에 접근하면 내부적으로 getter 함수인 [[Get]]
이 호출되고. 새로운 프로토타입을 할당하면 setter 함수인 [[Set]]
이 호출된다.