При попытке отладить конкретную проблему у меня был вариант использования для регистрации объекта в определенном формате в консоли 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" возвращает имя класса. .