
442
14장 메타프로그래밍
비슷한 함수인
Reflect.setPrototypeOf()
는 14.6절에서 설명합니다.
초기 브라우저 일부에서는 객체의
prototype
속성에
__proto__
라는 이름을 사
용했습니다. 이 프로퍼티는 오래전에 폐기됐지만 웹에는 여전히
__proto__
가 쓰
인 코드가 많이 남아 있으므로 ECMAScript 표준에서 자바스크립트 실행 환경은 모
두
__proto__
를 지원하도록 정했습니다. (표준에서 요구한 것은 아니지만 노드도
__proto__
를 지원합니다.) 최신 자바스크립트에서
__proto__
는 읽고 쓸 수 있는
프로퍼티이고,
Object.getPrototypeOf()
와
Object.setPrototypeOf()
를 대체할 수
도 있지만, 그렇게 해서는 안 됩니다. 다음와 같이 객체 리터럴에서 프로토타입을
지정하는 용도로는 쓸 수 있습니다.
let p
=
{z: 3};
let o
=
{
x: 1,
y: 2,
__
proto
__
: p
};
o.z //
=
> 3: o
는
p
를
상속합니다
.
14.4
심벌 타입은 웹에 이미 배포된 코드와 호환성을 유지하면서 자바스크립트를 안전
하게 확장하려는 목적으로 ES6에서 추가됐습니다. 12장에서 ‘이름’이 심벌
Symbol
.iterator
인 메서드를 만들기만 하면