
447
14.4 잘 알려진 심벌
형식화 배열 클래스에도 배열 클래스와 같은 방법으로 이 심벌을 사용할 수 있습니
다. ArrayBuffer의
slice()
메서드는 단순히 새로운 ArrayBuffer를 생성하지 않고
this.constructor
의
Symbol.species
프로퍼티를 참조합니다.
then()
같은 프라미스
메서드는 이 프로토콜을 통해 새로운 프라미스 객체를 생성해 반환합니다. 마지막
으로, (예를 들어) 맵의 서브클래스를 만들고, 새로운 Map 객체를 반환하는 메서드
를 정의한다면 서브클래스의 서브클래스를 만들 때
Symbol.species
가 유용할 것입
니다.
14.4.5
배열 메서드
concat()
은 반환될 배열에 사용할 생성자를 정할 때
Symbol.species
를
사용하는 메서드 중 하나입니다. 그런데
concat()
은
Symbol.isConcatSpreadable
역
시 사용합니다. 7.8.3절에서
concat()
메서드는
this
값과 배열 인자를 배열이 아닌
인자와 다르게 취급한다고 설명했습니다. 배열이 아닌 인자는 단순히 새로운 배열
에 합치기만 하지만,
this
배열과 배열 인자는 평탄화되므로 배열 인자 자체가 아
니라 배열 요소들이 병합됩니다.
ES6 ...