diff options
Diffstat (limited to 'node_modules/core-js/internals/array-species-create.js')
| -rw-r--r-- | node_modules/core-js/internals/array-species-create.js | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/node_modules/core-js/internals/array-species-create.js b/node_modules/core-js/internals/array-species-create.js new file mode 100644 index 0000000..5c6eaab --- /dev/null +++ b/node_modules/core-js/internals/array-species-create.js @@ -0,0 +1,20 @@ +var isObject = require('../internals/is-object'); +var isArray = require('../internals/is-array'); +var wellKnownSymbol = require('../internals/well-known-symbol'); + +var SPECIES = wellKnownSymbol('species'); + +// `ArraySpeciesCreate` abstract operation +// https://tc39.github.io/ecma262/#sec-arrayspeciescreate +module.exports = function (originalArray, length) { + var C; + if (isArray(originalArray)) { + C = originalArray.constructor; + // cross-realm fallback + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; + else if (isObject(C)) { + C = C[SPECIES]; + if (C === null) C = undefined; + } + } return new (C === undefined ? Array : C)(length === 0 ? 0 : length); +}; |
