자바스크립트는 프로토타입 기반 언어로, 상속을 구현하기 위해 프로토타입 상속(Prototype Inheritance)을 사용합니다. 이것은 객체지향 프로그래밍에서 객체 간의 관계를 정의하는 방법 중 하나입니다. 프로토타입 상속을 이해하는 것은 자바스크립트 개발자로서 중요한 요소입니다.
프로토타입 이해하기
프로토타입은 객체간에 공유되는 템플릿이라고 생각할 수 있습니다. 자바스크립트에서 모든 객체는 “프로토타입”이라고 불리는 다른 객체에 대한 참조를 가지고 있습니다. 이러한 프로토타입 체인을 통해 객체가 다른 객체의 프로퍼티와 메소드를 상속받을 수 있습니다.
// 프로토타입 객체 생성
let animal = {
isAlive: true,
eat: function() {
console.log("Eating...");
}
};
// 새로운 객체 생성 및 상속
let dog = Object.create(animal);
dog.bark = function() {
console.log("Woof Woof!");
};
// 프로퍼티와 메소드 상속 확인
console.log(dog.isAlive); // true
dog.eat(); // Eating...
dog.bark(); // Woof Woof!
위의 예제에서 animal
객체는 isAlive
프로퍼티와 eat
메소드를 가지고 있습니다. dog
객체는 animal
객체를 프로토타입으로 갖고 있으며, 따라서 isAlive
와 eat
를 상속받습니다. 또한 dog
객체에는 bark
메소드가 추가되어 있습니다.
프로토타입 상속 활용하기
프로토타입 상속을 사용하면 코드를 재사용하고 객체 간에 계층 구조를 정의할 수 있습니다. 이를 통해 코드의 유지 보수성을 높일 수 있고, 객체지향 프로그래밍의 기능을 자바스크립트에서도 구현할 수 있습니다.
// 부모 클래스 생성
function Animal() {
this.isAlive = true;
}
Animal.prototype.eat = function() {
console.log("Eating...");
};
// 자식 클래스 생성
function Dog() {
this.breed = "unknown";
}
Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;
Dog.prototype.bark = function() {
console.log("Woof Woof!");
};
// 객체 생성 및 상속 확인
let myDog = new Dog();
console.log(myDog.isAlive); // true
myDog.eat(); // Eating...
myDog.bark(); // Woof Woof!
위의 예제에서 Animal
클래스는 isAlive
프로퍼티와 eat
메소드를 정의합니다. Dog
클래스는 Animal
클래스를 상속받아 breed
프로퍼티와 bark
메소드를 추가합니다. Dog
클래스의 객체는 isAlive
, eat
, bark
를 모두 상속받아 사용할 수 있습니다.
결론
자바스크립트의 프로토타입 상속을 이해하면 객체지향 프로그래밍에서의 상속 개념을 자바스크립트에서도 구현할 수 있습니다. 이를 통해 코드의 재사용성과 유지 보수성을 향상시킬 수 있습니다. 프로토타입 상속은 자바스크립트 개발자에게 중요한 개념이므로 꼭 익혀두시기 바랍니다.