30 lines
733 B
JavaScript
30 lines
733 B
JavaScript
|
// Copyright 2018 the V8 project authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
{
|
||
|
class MyArray extends Array {
|
||
|
static get [Symbol.species]() {
|
||
|
return Array;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const wannabe = new MyArray();
|
||
|
const flattened = wannabe.flat(Infinity);
|
||
|
assertEquals(false, flattened instanceof MyArray);
|
||
|
assertEquals(true, flattened instanceof Array);
|
||
|
}
|
||
|
|
||
|
{
|
||
|
class MyArray extends Array {
|
||
|
static get [Symbol.species]() {
|
||
|
return this;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const wannabe = new MyArray();
|
||
|
const flattened = wannabe.flat(Infinity);
|
||
|
assertEquals(true, flattened instanceof MyArray);
|
||
|
assertEquals(true, flattened instanceof Array);
|
||
|
}
|