12345678910111213141516171819 |
- 'use strict';
- var isCallable = require('../internals/is-callable');
- var isObject = require('../internals/is-object');
- var setPrototypeOf = require('../internals/object-set-prototype-of');
-
- // makes subclassing work correct for wrapped built-ins
- module.exports = function ($this, dummy, Wrapper) {
- var NewTarget, NewTargetPrototype;
- if (
- // it can work only with native `setPrototypeOf`
- setPrototypeOf &&
- // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
- isCallable(NewTarget = dummy.constructor) &&
- NewTarget !== Wrapper &&
- isObject(NewTargetPrototype = NewTarget.prototype) &&
- NewTargetPrototype !== Wrapper.prototype
- ) setPrototypeOf($this, NewTargetPrototype);
- return $this;
- };
|