객체지향 프로그래밍(OOP, Object Oriented Programming)의 한 개념으로, 어떤 객체의 프로퍼티 또는 메서드를 상속받아 사용할 수 있는 것을 말한다.
자바스크립트는 프로토타입을 기반으로 상속을 구현한다.
프로토타입은 객체 간 상속을 구현하기 위해 사용된다. 프로토타입은 한 객체의 부모 객체 역할을 하는 객체로서 다른 객체에 공유되는 프로퍼티나 메서드를 제공한다.
// 생성자 함수
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(circle1.getArea === circle2.getArea); // false
console.log(circle1.getArea()); // 3.145
console.log(circle2.getArea()); // 12.566
위의 코드를 살펴보면,
// 상속
// 생성자 함수
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(circle1.getArea === circle2.getArea); // true
console.log(circle1.getArea()); // 3.145
console.log(circle2.getArea()); // 12.566
출처 : 모던 자바스크립트 Deep Dive