diff --git a/lib/internal/util/inspect.js b/lib/internal/util/inspect.js index 1e7277ef38bfad..850740d3c2bc43 100644 --- a/lib/internal/util/inspect.js +++ b/lib/internal/util/inspect.js @@ -727,12 +727,20 @@ function formatRaw(ctx, value, recurseTimes, typedArray) { braces = getIteratorBraces('Set', tag); formatter = formatIterator; // Handle other regular objects again. - } else if (keys.length === 0) { - if (isExternal(value)) - return ctx.stylize('[External]', 'special'); - return `${getPrefix(constructor, tag, 'Object')}{}`; } else { - braces[0] = `${getPrefix(constructor, tag, 'Object')}{`; + let fallback = ''; + if (constructor === null) { + fallback = internalGetConstructorName(value); + if (fallback === tag) { + fallback = 'Object'; + } + } + if (keys.length === 0) { + if (isExternal(value)) + return ctx.stylize('[External]', 'special'); + return `${getPrefix(constructor, tag, fallback)}{}`; + } + braces[0] = `${getPrefix(constructor, tag, fallback)}{`; } } } diff --git a/test/parallel/test-util-inspect.js b/test/parallel/test-util-inspect.js index fc69f41ef4274a..93b1d4439812f2 100644 --- a/test/parallel/test-util-inspect.js +++ b/test/parallel/test-util-inspect.js @@ -1156,6 +1156,10 @@ if (typeof Symbol !== 'undefined') { util.inspect({ a: { b: new ArraySubclass([1, [2], 3]) } }, { depth: 1 }), '{ a: { b: [ArraySubclass] } }' ); + assert.strictEqual( + util.inspect(Object.setPrototypeOf(x, null)), + '[ObjectSubclass: null prototype] { foo: 42 }' + ); } // Empty and circular before depth.