
프로토타입이 무엇인지 알기 위해서는 자바스크립트에서 중요한 개념인 객체 지향 프로그래밍에 대해서 알아야한다.
캡슐화
상속
다형성
추상화
// 생성자 함수 정의 function Person(name) { this.name = name; } // Person의 프로토타입에 메서드 추가 Person.prototype.sayHello = function() { return `Hello, my name is ${this.name}`; }; // Person 객체 생성 const alice = new Person('Haegu'); // sayHello 메서드는 Person.prototype에 정의되어 있기 때문에, Hageu 객체에서 호출할 수 있다. console.log(alice.sayHello()); // "Hello, my name is Haegu"이 예제에서는 Person이라는 생성자 함수를 정의하고, Person.prototype에 sayHello 메서드를 추가했다. 이를 통해 Person의 모든 인스턴스는 sayHello 메서드를 사용할 수 있다.
// 기본 객체 정의
const animal = {
speak() {
return 'Animal noise';
}
};
// 새로운 객체를 animal의 프로토타입으로 설정
const dog = {
bark() {
return 'Woof!';
}
};
// dog 객체의 프로토타입을 animal로 설정
dog.__proto__ = animal;
console.log(dog.speak()); // "Animal noise" (animal의 메서드)
console.log(dog.bark()); // "Woof!" (dog의 메서드)
이 예제에서 dog 객체의 proto 속성을 animal 객체로 설정하여, dog가 animal의 속성 및 메서드를 상속받는다. 이로 인해 dog 객체는 animal의 speak 메서드도 사용할 수 있다.
