При попытке отладить конкретную проблему у меня был вариант использования для регистрации объекта в определенном формате в консоли NodeJS.
Чтобы продемонстрировать, давайте рассмотрим объект, который выглядит так
class Foo { bar = null; baz = null; constructor(val) { this.bar = val; this.baz = val*val; } } const foo = new Foo(10); console.log(foo); // Default output >> Foo { bar: 10, baz: 100 }
Что, если вы хотите контролировать, как он регистрируется в консоли? то есть вместо «Foo {bar: 10}» вы хотите напечатать что-то вроде
Class: Foo Property bar: 10 Property baz: 100
В большинстве языков это делается путем переопределения метода inspect, доступного для соответствующего класса.
В узле это доступно через библиотеку node:utils.
const util = require('node:util'); const customInspectSymbol = util.inspect.custom; class Foo { bar = null; baz = null; constructor(val) { this.bar = val; this.baz = val*val; } [customInspectSymbol](depth, inspectOptions, inspect) { return `Class: ${this.constructor.name} Property bar: ${this.bar} Property baz: ${this.baz} `; } } console.log(new Foo(10)) >> Class: Foo >> Property bar: 10 >> Property baz: 100
Здесь следует отметить следующее: "util.inspect.custom" возвращает символ, который используется для метода проверки, а "this.constructor.name" возвращает имя класса. .