diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/internal/util/inspect.js | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 88362f8615..0f81ab5d02 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -463,28 +463,22 @@ function clazzWithNullPrototype(clazz, name) { function noPrototypeIterator(ctx, value, recurseTimes) { let newVal; if (isSet(value)) { - const clazz = Object.getPrototypeOf(value) || - clazzWithNullPrototype(Set, 'Set'); + const clazz = clazzWithNullPrototype(Set, 'Set'); newVal = new clazz(setValues(value)); } else if (isMap(value)) { - const clazz = Object.getPrototypeOf(value) || - clazzWithNullPrototype(Map, 'Map'); + const clazz = clazzWithNullPrototype(Map, 'Map'); newVal = new clazz(mapEntries(value)); } else if (Array.isArray(value)) { - const clazz = Object.getPrototypeOf(value) || - clazzWithNullPrototype(Array, 'Array'); + const clazz = clazzWithNullPrototype(Array, 'Array'); newVal = new clazz(value.length); } else if (isTypedArray(value)) { - let clazz = Object.getPrototypeOf(value); - if (!clazz) { - const constructor = findTypedConstructor(value); - clazz = clazzWithNullPrototype(constructor, constructor.name); - } + const constructor = findTypedConstructor(value); + const clazz = clazzWithNullPrototype(constructor, constructor.name); newVal = new clazz(value); } - if (newVal) { + if (newVal !== undefined) { Object.defineProperties(newVal, Object.getOwnPropertyDescriptors(value)); - return formatValue(ctx, newVal, recurseTimes); + return formatRaw(ctx, newVal, recurseTimes); } } @@ -728,9 +722,11 @@ function formatRaw(ctx, value, recurseTimes, typedArray) { } else { // The input prototype got manipulated. Special handle these. We have to // rebuild the information so we are able to display everything. - const specialIterator = noPrototypeIterator(ctx, value, recurseTimes); - if (specialIterator) { - return specialIterator; + if (constructor === null) { + const specialIterator = noPrototypeIterator(ctx, value, recurseTimes); + if (specialIterator) { + return specialIterator; + } } if (isMapIterator(value)) { braces = [`[${tag || 'Map Iterator'}] {`, '}']; |