Задать вопрос
@ArhanMilarov
Новичок в программировании

Как в консоле в Node.js вывести методы которые есть у экземпляра класса?

Когда в консоли вывожу console.log(global); (это для примера, тут любой объект может быть), я вижу только это:

<ref *1> Object [global] {
  global: [Circular *1],
  clearInterval: [Function: clearInterval],
  clearTimeout: [Function: clearTimeout],
  setInterval: [Function: setInterval],
  setTimeout: [Function: setTimeout] {
    [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
  },
  queueMicrotask: [Function: queueMicrotask],
  clearImmediate: [Function: clearImmediate],
  setImmediate: [Function: setImmediate] {
    [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)]
  }
}


Мне нужно чтобы в консоли выводилась вся цепочка прототипов их свойства и методы. Как такое сделать с помощью console в Node.js ?
  • Вопрос задан
  • 567 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
bingo347
@bingo347 Куратор тега Node.js
Crazy on performance...
Во-первых, логировать через console.dir с опцией showHidden: true
// Для класса ClassName
console.dir(ClassName.prototype, {showHidden: true});

// Для любого объекта или инстанса класса obj
console.dir(Object.getPrototypeOf(obj), {showHidden: true});


Ну и зная, что любой прототип - это тоже объект, а корневой прототип всегда null, то можно просто пройтись рекурсивно, чтоб посмотреть всю цепочку:
class SomeClass extends Array {}
function collectPrototypesChain(obj) {
  const proto = Object.getPrototypeOf(obj);
  if(!proto) { return null; }
  const {name} = proto.constructor;
  return {name, proto, next: collectPrototypesChain(proto)};
}

console.dir(collectPrototypesChain(new SomeClass()), {showHidden: true, depth: 4});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы