Когда вы вводите console.log() в программу JavaScript, которая запускается в браузере, это создаст красивую запись в консоли браузера:
Как только вы нажмете стрелку, журнал развернется, и вы сможете четко увидеть свойства объекта:
В узле происходит то же самое.
У нас нет такой роскоши, когда мы регистрируем что-то на консоли, потому что это приведет к выводу объекта в оболочку, если вы запустите программу узла вручную, или в файл журнала. Вы получаете строковое представление объекта.
Теперь все в порядке до определенного уровня вложенности. После двух уровней вложенности узел сдается и печатает [Объект] в качестве заполнителя:
const obj = {
name: 'Flavio',
age: 35,
person1: {
name: 'Tony',
age: 50,
person2: {
name: 'Albert',
age: 21,
person3: {
name: 'Peter',
age: 23
}
}
}
}
console.log(obj)
{
name: 'Flavio',
age: 35,
person1: {
name: 'Tony',
age: 50,
person2: {
name: 'Albert',
age: 21,
person3: [Object]
}
}
}Как вы можете напечатать весь объект целиком?
Лучший способ сделать это, сохранив красивый отпечаток, – использовать
console.log(JSON.stringify(obj, null, 2))
где 2 это количество пробелов, используемых для отступов.
Другой вариант – использовать
require('util').inspect.defaultOptions.depth = null
console.log(obj)но проблема в том, что вложенные объекты после уровня 2 теперь сглажены, и это может быть проблемой со сложными объектами.
Оригинал: “https://flaviocopes.com/node-inspect-object/”