diff --git a/lib/internal/url.js b/lib/internal/url.js index cacdff7c3aa0f5..25a4f51ba23542 100644 --- a/lib/internal/url.js +++ b/lib/internal/url.js @@ -5,6 +5,7 @@ const { hexTable, isHexTable } = require('internal/querystring'); +const { getConstructorOf } = require('internal/util'); const binding = process.binding('url'); const context = Symbol('context'); const cannotBeBase = Symbol('cannot-be-base'); @@ -171,17 +172,6 @@ function onParseHashComplete(flags, protocol, username, password, this[context].fragment = fragment; } -function getEligibleConstructor(obj) { - while (obj !== null) { - if (Object.prototype.hasOwnProperty.call(obj, 'constructor') && - typeof obj.constructor === 'function') { - return obj.constructor; - } - obj = Object.getPrototypeOf(obj); - } - return null; -} - class URL { constructor(input, base) { // toUSVString is not needed. @@ -220,7 +210,7 @@ class URL { if (typeof depth === 'number' && depth < 0) return opts.stylize('[Object]', 'special'); - const ctor = getEligibleConstructor(this); + const ctor = getConstructorOf(this); const obj = Object.create({ constructor: ctor === null ? URL : ctor