| var isObject = require('./_is-object'); | |
| var isArray = require('./_is-array'); | |
| var SPECIES = require('./_wks')('species'); | |
| module.exports = function (original) { | |
| var C; | |
| if (isArray(original)) { | |
| C = original.constructor; | |
| // cross-realm fallback | |
| if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined; | |
| if (isObject(C)) { | |
| C = C[SPECIES]; | |
| if (C === null) C = undefined; | |
| } | |
| } return C === undefined ? Array : C; | |
| }; |