객체의 prototype 속성은 그 객체가 프로퍼티를 상속하는 '부모 객체'이다.
prototype 속성은 객체가 생성될 때 함께 설정된다.
1. 객체 리터럴로 생성된 객체의 프로토타입은 Object.prototype
이다.
2. new
로 생성한 객체의 프로토타입은 함수의 prototype
프로퍼티 값이다.
3. Object.create()
로 생성된 객체의 프로토타입은 Object.create()
의 첫 번째 인자다(null
일 수 있다).
객체의 프로토타입은 객체를 Object.getPrototypeOf()
에 전달해서 파악할 수 있다.
Object.getPrototypeOf({}) // => Object.prototype
Object.getPrototypeOf([]) // => Array.prototype
Object.getPrototypeOf(()=>{}) // => Function.prototype
객체가 다른 객체의 프로토타입인지(또는 프로토타입 체인에 속해 있는지)는 isPrototypeOf()
메서드로 파악한다.
객체의 prototype
속성은 객체가 생성될 때 정해지며 일반적으로는 그대로 고정된다. 다음과 같이 Object.setPrototypeOf()
로 객체의 프로토타입을 바꿀 수 있다.
let o = {x: 1};
let p = {y: 2};
Object.setPrototypeOf(o, p); // o의 프로토타입을 p로 정한다.
o.y // => 2: o는 이제 프로퍼티 y를 상속한다.
let a = [1, 2, 3];
Object.setPrototypeOf(a, p); // 배열 a의 프로토타입을 p로 바꾼다.
a.join // => undefined: 이제 a에는 join() 메서드가 없다.
'부트캠프 > 자바스크립트 완벽 가이드' 카테고리의 다른 글
[JavaScript] Jest 사용법 기초 (0) | 2023.03.14 |
---|---|
[JavaScript] Symbol.toStringTag (0) | 2023.03.06 |
[JavaScript] 프록시 패턴 (0) | 2023.03.05 |
13장. 비동기 자바스크립트 (0) | 2023.02.28 |
11장(2). 자바스크립트 표준 라이브러리 (날짜와 시간, JSON 직렬화) (0) | 2023.02.20 |