FE

[스터디] 4주차 자바스크립 (모던 자바스크립트 deep dive)

올바른생활부터 2025. 1. 28. 23:25
728x90
반응형
SMALL

프로토타입

질문 1. 프로토타입이 무엇인가요?

  • 프로토타입은 해당 객체(Array, Object)에 메서드를 가지고 있지 않더라도, 객체를 생성한 생성자 함수 prototype 프로퍼티에 있는 메서드들은 [[Prototype]]라는 연결 통로를 통해 상속 받아 마치 자신의 것처럼 사용할 수 있도록 합니다.

※ proto 와 [[Prototype]] 같다고 생각함

 

질문 2. [[prototype]] 대해서 설명해주세요.

  • [prototype]는 객체를 생성한 생성자 함수의 prototype에 접근할 수 있는 연결 통로 역할을 합니다.

질문 3. 프로토타입 체인에 대해서 설명해주세요.

  • 어떠한 메서드를 호출했을 때 자기 자신에서 찾고, 만약 없을 경우 [[Prototype]]로 이어진 각 prototype에 모두 접근하여 해당 메서드를 사용할 수 있다.
  • ※ 스코프 체인과 유사하다.

예시

  • Array에서 최상위 부모인 Object의 메서드인 toString을 쓰는 예시)

const arr = [1,2]

arr.toString() //  '1,2'

  • Array에서 최상위 부모인 Object의 메서드인 toString을 사용하여 1,2를 문자열로 만든 것이다.

질문 4. __proto__ 접근자 프로퍼티와 prototype 프로퍼티를 사용하는 주체가 어떻게 다른지 설명해보세요.

  • __proto__ : 모든 객체가 가지고 있고 사용한다. 객체가 자신의 프로토타입에 접근하거나 교체하기 위해 사용한다.
  • “prototype” : 생성자 함수가 사용하며 constructor가 가지고 있다. 생성자 함수가 자신이 생성할 인스턴스의 프로토타입을 할당하기 위해 사용한다.

질문 5. in연산자에 대해 설명하고, in연산자 대신 사용할 수 있는 메서드를 적어주세요.

  • in 연산자는 객체 내에 특정 프로퍼티가 존재하는지 여부를 확인합니다.
  • in연산자 대신 ES6에서 도입된 Reflect.has()메서드를 사용할 수 있다.
728x90
반응형
LIST