Array[Symbol.species]advancedclass MyArr extends Array {}
const a = new MyArr(1, 2, 3)
a.map(x => x * 2) instanceof MyArr // β trueArray[Symbol.species] controls which constructor methods like map() use for the return type.
Symbol.species is a well-known symbol that lets built-in methods (like .map(), .filter(), .slice()) know which constructor to use when creating a derived object. When a class extends Array, those methods return instances of the subclass by default.
Challenge: Create ArraySubclass that extends Array. Implement mapReturnsSubclass that returns true when .map() on an ArraySubclass instance produces another ArraySubclass instance.
mapReturnsSubclass() // β true