var anObject = require('../internals/an-object'); | |
var aFunction = require('../internals/a-function'); | |
var wellKnownSymbol = require('../internals/well-known-symbol'); | |
var SPECIES = wellKnownSymbol('species'); | |
// `SpeciesConstructor` abstract operation | |
// https://tc39.github.io/ecma262/#sec-speciesconstructor | |
module.exports = function (O, defaultConstructor) { | |
var C = anObject(O).constructor; | |
var S; | |
return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? defaultConstructor : aFunction(S); | |
}; |