Как использовать консоль с console.dir («строка» + объект) - PullRequest
0 голосов
/ 23 мая 2019

Вот мой код:

var foo = {
    age:20
}

console.dir(`hello:${foo}`)

Я ожидаю

hello:{ age: 201 }

но я получил

'hello:[object Object]'

и если я не хочу использовать

console.log("hello")
console.dir(foo)

есть ли способ напечатать "привет" и содержимое объекта в одной консольной функции?

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Просто используйте JSON.stringify. Происходит следующее: когда вы используете строковую интерполяцию ${}, вызывается метод toString для объекта, результатом которого является [object Object]:

console.log({}.toString());

JSON.stringify преобразует объект или массив в строку, но сохраняет содержимое и избегает вывода toString. Так что просто используйте это так:

var foo = {
  age: 20
};

console.dir(`hello:${JSON.stringify(foo)}`)

Также обратите внимание, что dir используется для отображения различных свойств объектов. Лучше просто использовать console.log, что означает, что вы можете вообще избежать JSON.stringify:

var foo = {
  age: 20
};

console.log("hello:", foo);
0 голосов
/ 23 мая 2019

.dir ожидает, что объект будет передан, и показывает это как таблицу..log предназначен для регистрации всего (включая строки).Поэтому, если вы хотите записать строку и объект в виде таблицы, вам потребуются две разные функции, или, другими словами: две разные функции.

Если вы сделаете это один раз , естьнет смысла писать трехстрочную функцию, которая сводит две строки к одной (ну, на самом деле, четыре).Однако если вы планируете делать это чаще, тогда ...

 Object.defineProperty(console, "taggedDir", {
    value(name, table) {
       this.log(name);
       this.dir(table);
    }
});

console.taggedDir("Table:", { /*...*/ });
...