상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - 자바스크립트에서 함수의 프로토타입을 활용한 상속 구현 방법은 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
<a href='https://sangseek.com/sangseeks/자바/ko'>자바</a>스크립트에서 함수의 프로토타입을 활용한 상속 구현 방법은 객체 지향 프로그래밍의 중요한 개념 중 하나입니다. 자바스크립트는 프로토타입 기반 언어이기 때문에, 클래스 기반 언어에서의 상속과는 다르게 프로토타입을 통해 객체 간의 관계를 설정합니다. 아래에서는 자바스크립트에서 프로토타입을 활용한 상속 구현 방법에 대해 자세히 설명하겠습니다. 1. 기본 개념 자바스크립트에서 모든 객체는 다른 객체를 참조할 수 있는 `[[<a href='https://sangseek.com/sangseeks/Prototype/ko'>Prototype</a>]]`이라는 내부 속성을 가지고 있습니다. 이 속성을 통해 객체는 다른 객체의 속성과 메서드에 접근할 수 있습니다. 프로토타입 상속은 이러한 `[[Prototype]]` 체인을 활용하여 구현됩니다. 2. 프로토타입 상속 구현하기 2.1. <a href='https://sangseek.com/sangseeks/생성자 함수/ko'>생성자 함수</a> 정의 먼저, 상속할 기본 객체(부모)를 정의하기 위해 생성자 함수를 만듭니다. 예를 들어, `Animal`이라는 생성자 함수를 정의해 보겠습니다. ```javascript function Animal(name) { this.name = name; } Animal.prototype.speak = function() { console.log(this.name + ' makes a noise.'); }; ``` 위 코드에서 `Animal` 생성자 함수는 `name`이라는 속성을 초기화하며, `speak`라는 메서드를 프로토타입에 추가합니다. 2.2. 자식 객체 생성 이제 `Animal`을 상속받는 `Dog`라는 생성자 함수를 정의합니다. 이를 위해 `Animal`의 프로토타입을 `Dog`의 프로토타입으로 설정합니다. ```javascript function Dog(name) { Animal.call(this, name); // 부모 생성자 호출 } // Dog의 프로토타입을 Animal의 인스턴스로 설정 Dog.prototype = Object.create(Animal.prototype); Dog.prototype.constructor = Dog; // 생성자 속성 복원 Dog.prototype.speak = function() { console.log(this.name + ' barks.'); }; ``` 위 코드에서 `Dog` 생성자 함수는 `Animal`의 생성자를 호출하여 `name` 속성을 초기화합니다. 그리고 `Dog.prototype`을 `Animal.prototype`의 인스턴스로 설정하여 <a href='https://sangseek.com/sangseeks/상속 관계/ko'>상속 관계</a>를 형성합니다. 마지막으로 `constructor` 속성을 복원하여 `Dog` 생성자와의 연결을 유지합니다. 2.3. 인스턴스 생성 및 <a href='https://sangseek.com/sangseeks/메서드 호출/ko'>메서드 호출</a> 이제 `Dog` 객체를 생성하고 메서드를 호출해 보겠습니다. ```javascript const dog = new Dog('Rex'); dog.speak(); // "Rex barks." ``` 위 코드에서 `Dog`의 인스턴스를 생성하고 `speak` 메서드를 호출하면, `Dog`의 `speak` 메서드가 실행됩니다. 3. 프로토타입 상속의 장점 - 코드 재사용 : 부모 객체의 메서드를 자식 객체에서 재사용할 수 있어 코드 중복을 줄일 수 있습니다. - 메모리 효율성 : 메서드가 프로토타입에 정의되므로, 모든 인스턴스가 메서드를 공유하게 되어 메모리 사용량이 줄어듭니다. - 유연성 : <a href='https://sangseek.com/sangseeks/상속 구조/ko'>상속 구조</a>를 통해 객체 간의 관계를 유연하게 설정할 수 있습니다. 4. 프로토타입 상속의 단점 - 복잡성 : 프로토타입 체인이 깊어질 경우, 코드의 가독성이 떨어질 수 있습니다. - `this`의 문제 : 메서드가 호출될 때 `this`의 컨텍스트가 변경될 수 있어 주의가 필요합니다. 5. <a href='https://sangseek.com/sangseeks/ES6/ko'>ES6</a> 클래스 문법 ES6에서는 클래스를 도입하여 상속을 더 직관적으로 구현할 수 있습니다. 하지만, 내부적으로는 여전히 프로토타입 기반의 상속을 사용합니다. ```javascript class Animal { constructor(name) { this.name = name; } speak() { console.log(this.name + ' makes a noise.'); } } class Dog extends Animal { speak() { console.log(this.name + ' barks.'); } } const dog = new Dog('Rex'); dog.speak(); // "Rex barks." ``` 위와 같이 ES6의 `class` 문법을 사용하면 상속을 더 간결하게 표현할 수 있습니다. 결론 자바스크립트에서 함수의 프로토타입을 활용한 상속 구현 방법은 객체 지향 프로그래밍의 중요한 기법입니다. 프로토타입을 통해 객체 간의 관계를 설정하고, 코드 재사용성을 높이며, 메모리 효율성을 개선할 수 있습니다. ES6의 클래스 문법을 통해 이러한 상속 구조를 더 직관적으로 구현할 수 있지만, 프로토타입 기반의 상속 개념은 여전히 자바스크립트의 핵심입니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기