可以通过重写Array类的静态方法[Symbol.species],来指定Array map方法返回的对象类型。代码示例如下:
class MyArray extends Array {
static get [Symbol.species]() { return Array; }
}
const myArr = new MyArray(1, 2, 3);
const mappedArr = myArr.map(x => x * 2);
console.log(mappedArr instanceof MyArray); // false
console.log(mappedArr instanceof Array); // true
在上面的代码中,MyArray继承了Array类,并重写了[Symbol.species]方法,使其返回Array。这样调用MyArray实例的map方法时,返回的对象类型就是Array,而不是MyArray。