1 var isCallable = require('../internals/is-callable');
2 var isObject = require('../internals/is-object');
3 var setPrototypeOf = require('../internals/object-set-prototype-of');
5 // makes subclassing work correct for wrapped built-ins
6 module.exports = function ($this, dummy, Wrapper) {
7 var NewTarget, NewTargetPrototype;
9 // it can work only with native `setPrototypeOf`
11 // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
12 isCallable(NewTarget = dummy.constructor) &&
13 NewTarget !== Wrapper &&
14 isObject(NewTargetPrototype = NewTarget.prototype) &&
15 NewTargetPrototype !== Wrapper.prototype
16 ) setPrototypeOf($this, NewTargetPrototype);