프로토타입

어승준·2023년 10월 25일

JS 스터디

목록 보기
22/26
post-thumbnail

📌 자바스크립트가 왜 prototype-based language로 설명되는지 말해주세요.

  • 패턴 프로토타입, 객체를 생성할 때 원본이 되는 객체를 복사해서 생성하는 패턴
  • 프로토타입이라는걸 유전자라고 생각하면 돼요. 내 몸이 어떤 것에 의해서 형성이 되었는지, 유전자에 전부 다 남아있는 것처럼 자바스크립트의 Array, Object에도 원형(근본)의 메소드들이 담겨있는거지. 그래서 우리가 따로 함수를 만들어서 넣지 않아도 자체적으로 적용되어있는 메소드를 쓸 수 있는거에요.
  • 객체지향에서 제일 중요한 재사용을 우리는 프로토타입이라는 것을 이용하여 메소드를 다양하게 사용할 수 있던 것이다.

📌 프로토타입 기반의 상속과 클래스 기반의 상속의 차이는 무엇인가요?

  • 프로토타입 기반의 상속
    • 객체 간의 상속 관계는 프로토타입 체인을 통해 정의됩니다.
    • Object.create()__proto__를 사용하여 다른 객체를 상속합니다.
  • 클래스 기반의 상속
    • 클래스는 객체의 설계도이며, 객체는 클래스를 인스턴스화하여 생성됩니다. 클래스는 속성 및 메서드의 정의를 포함하며, 객체는 클래스를 기반으로 상속됩니다.
    • 클래스 기반의 상속은 일반적으로 상속 계층 구조와 함께 사용되며, 부모 클래스(superclass)에서 하위 클래스(subclass)로 상속된 속성과 메서드를 전달합니다.

📌 프로토타입이란 무엇인가요?

  • 프로토타입은 어떤 객체의 상위(부모) 객체의 역할을 하는 객체로서 다른 객체에 공유 프로퍼티(메서드 포함)를 제공한다. 프로토타입을 상속받은 하위(자식) 객체는 상위 팩체의 프로퍼티를 자신이 프로퍼티처럼 자유롭게 사용할 수 있다.
  • 모든 객체는 [[Prototype]]이라는 내부 슬롯을 가지며, 여기에 저장되는 프로토타입은 객체 생성 방식에 의해 결정된다. 즉, 객체가 생성될 때 객체 생성 방식에 따라 프로토타입이 결정되고 [[Prototype]]에 저장된다.
  • 프로토타입이 필요한 이유
    • 프로토타입은 여러 객체 간에 공유된 메서드와 속성을 가능하게 하므로 메모리를 효율적으로 사용
    • 프로토타입을 사용하면 새로운 객체를 생성할 때 이미 정의된 객체의 기능을 재사용할 수 있고, 이는 코드의 재사용성을 높임
    • 프로토타입을 사용하면 상속 관계를 형성하여 객체 간의 계층 구조를 만들 수 있음. 부모 객체의 속성과 메서드를 하위 객체로 상속하여 코드를 구조화하고 유지 관리하기 용이하게 함.

📌 클래스 기반 언어와 프로토타입 기반 언어의 차이점에 대해 설명해주세요.

  • 클래스 기반 언어
    • 틀 자체를 상속 시킨다. 상속시킨 틀을 이용해서 객체 생성
  • 프로토타입기반 언어
    • 객체들을 프로토타입으로 연결시킴, 프로토타입을 사용하여 클래스 속성을 흉내낸다.

📌 proto 접근자 프로퍼티와 prototype 프로퍼티의 공통점과 차이점에 대해 설명해 주세요.

profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글