JavaScript ES6使用模板字面量输出对象的console.log

18

我有一个简单的对象,我想在控制台中显示它。

var obj = { name: 'John', age: 22 }

如果我输入:

console.log(obj)

对象 { 名字: "John", 年龄: 22 }

如果我输入:

console.log('my object is: ' + obj)

我的对象是:[object Object]

console.log('my object is: %o', obj)

我的目标是:Object { name: "John", age: 22 }

如何使用模板字面量实现这个目标?

如果我输入:

console.log(`my object is: ${obj}`)

我的对象是:[object Object]


6
也可以这样做: console.log('我的对象是:', obj);。 模板本身不智能地生成对象的字符串表示形式,因此你无法仅从模板字面量中获取所需的输出。 它们只调用默认的字符串转换,这不是你想要的。 你需要自己制作所需的字符串表示,并将其传递给模板字面量。 - jfriend00
以上是正确的答案...你必须回到旧的逗号分隔的模板文字方式,而对象的字面表示是[object Object] - duggi
3个回答

35
你可以使用JSON.stringify来序列化这个对象。

var obj = { name: 'John', age: 22 };
console.log(`my object is: ${JSON.stringify(obj)}`);


ES6 注意事项:是的,但请注意,当使用类时,JSON.stringify返回undefined,而console.log与旧的toSource()非常相似。 - user3000327

-1

console.log我的对象是: ${obj};

这个灰色段落两端都有波浪号(`),但是格式化正在将它们移除。


目前你的回答不够清晰,请[编辑]以添加更多细节,帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何编写好答案的更多信息。 - Community

-2

var obj = { name: 'John', age: 22 }
log`This is obj: ${obj}`

function log(strings, ...values) {
   console.log(strings.reduce((p, c, i) => 
        `${p}${c}${values[i]?JSON.stringify(values[i]):''}`, ''));
}


2
这是一种过于复杂的方式来执行一个简单的操作。 接受的答案可以达到目的。 - Swaps

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接