도서 리뷰
[코어 자바스크립트] 06_프로토타입
선인장777
2023. 9. 24. 19:58
|
학습 전 |
학습 후 |
프로토타입이란 무엇인가요? |
객체가 생성되기 위한 원형입니다. |
모든 자바스크립트 객체는 프로토타입을 가집니다. 객체의 프로토 타입은 'prototype' 속성으로 접근할 수 있습니다. 객체를 생성할때 프로토 타입을 기반으로 상속을 받습니다. |
프로토타입 체이닝이란? |
객체에 접근하는 방법입니다. |
자바스크립트는 객체의 프로토타입 체인을 따라가며 속성과 메서드를 찾습니다. 객체 자체에 해당 속성 또는 메서드가 없는 경우, 프로토타입 체인을 따라 상위 프로토타입에서 해당 멤버를 찾을 때까지 검색합니다. |
Object.create는 어떤 메소드인가요? |
객체를 생성하는 메서드입니다 |
주어진 객체를 프로토타입으로 사용하는 새로운 객체를 생성합니다. 이 새로운 객체는 기존 객체의 프로토타입 체인을 따라갈 수 있으므로 상속 및 객체 구조를 쉽게 설정할 수 있습니다. |
프로토타입과 클래스의 차이점은 무엇일까요? |
프로토타입은 객체의 원형이고 클래스는 인스턴스를 만들기 위한 틀입니다. |
- 문법적 차이:
- 프로토타입: 프로토타입 기반의 언어에서 객체는 다른 객체를 기반으로 생성됩니다. 이때 프로토타입 객체를 활용하여 상속과 메서드 공유가 이루어집니다. 프로토타입 객체는 생성자 함수와 함께 사용됩니다.
- 클래스: 클래스 기반 언어에서는 클래스가 객체를 정의하고 생성합니다. 클래스는 객체의 구조와 동작을 사전에 정의하며, 객체는 클래스를 인스턴스화하여 생성됩니다. 자바스크립트는 ECMAScript 6 (ES6) 이후부터 클래스를 지원하긴 하지만, 여전히 프로토타입 기반 언어로도 사용됩니다.
- 상속 방식:
- 프로토타입: 프로토타입은 객체를 기반으로 다른 객체를 생성하며, 이를 통해 상속이 이루어집니다. 객체는 프로토타입 체인을 통해 메서드와 속성을 상속받습니다.
- 클래스: 클래스는 상속 계층을 더 명시적으로 정의합니다. 부모 클래스에서 자식 클래스로 명시적으로 상속을 설정하며, 클래스는 부모 클래스의 속성과 메서드를 상속받습니다.
- 런타임 변경:
- 프로토타입: 프로토타입 기반의 언어에서는 객체의 프로토타입을 동적으로 변경할 수 있습니다. 이로 인해 객체의 동작을 동적으로 조정할 수 있습니다.
- 클래스: 클래스 기반 언어에서는 클래스 정의가 런타임에 변경되기 어렵습니다. 클래스는 정의된 후에 상대적으로 불변하며, 동적으로 클래스를 수정하기 어렵습니다.
- 인터페이스:
- 프로토타입: 프로토타입 기반의 언어에서는 인터페이스를 명시적으로 정의하지 않습니다. 객체는 필요한 메서드를 동적으로 추가하거나 수정할 수 있습니다.
- 클래스: 클래스 기반 언어에서는 클래스가 인터페이스를 정의하며, 클래스를 구현하는 객체는 해당 인터페이스를 준수해야 합니다.
- 사용 사례:
- 프로토타입: 자바스크립트와 같은 프로토타입 기반 언어는 동적이고 유연한 프로그래밍에 적합합니다. 웹 개발과 같이 런타임 환경에서 변경이 많은 경우에 유용합니다.
- 클래스: 정적이고 명시적인 구조를 필요로 하는 언어 및 더 엄격한 타입 시스템을 가진 언어에서 주로 사용됩니다.
|
프로토타입의 최상단에는 어떤 프로토타입이 존재할까요? |
|
모든 객체가 상속하는 기본 프로토타입 객체로 Object.prototype이 존재합니다. Object.prototype의 중요한 메서드와 속성은 constructor, hasOwnProperty, isPrototypeOf, toString, valueOf이 있습니다. |
프로토타입 메소드와 정적 메소드는 어떤 차이가 있을까요? |
|
프로토타입 메서드는 객체 인스턴스와 관련된 동작을 정의하고 호출하는데 사용되며, 정적메서드는 클래스 또는 생성자 함수와 관련된 동작을 정의하고 호출하는데 사용됩니다. |
프로토타입으로 상속은 어떻게 구현할 수 있을까요? |
extend... |
- 부모 객체(슈퍼클래스) 정의:
- 먼저 상속을 구현할 부모 객체(슈퍼클래스)를 정의합니다. 이 객체는 상속하려는 기능과 속성을 포함해야 합니다.
- 자식 객체(서브클래스) 생성:
- 자식 객체(서브클래스)를 생성하고, 부모 객체를 프로토타입으로 지정하여 상속을 설정합니다. 이를 위해 Object.create() 메서드를 사용합니다.
- 자식 객체에 추가 기능 및 속성 정의:
- 자식 객체에서 부모 객체에서 상속한 기능 외에도 추가 기능이나 속성을 정의할 수 있습니다.
- 자식 객체 인스턴스 생성:
- 자식 객체를 이용하여 실제 인스턴스를 생성합니다.
|