You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
18 lines
736 B
18 lines
736 B
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; |
|
};
|
|
|