`console.log` 打印一个对象并且得到 `“object Object“`

文章目录

  • 发现宝藏
  • [1. 使用 console.log 直接打印对象](#1. 使用 console.log 直接打印对象)
  • [2. 使用 JSON.stringify](#2. 使用 JSON.stringify)
  • [3. 检查对象的内容](#3. 检查对象的内容)
  • 示例代码
  • 总结

发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【宝藏入口】。

当你在 JavaScript 或 TypeScript 中尝试通过 console.log 打印一个对象并且得到 "object Object",这是因为你将对象转换为字符串时,使用了连接运算符(+)。JavaScript 在这种情况下会调用对象的 toString 方法,这通常会返回 [object Object]。如果你想查看对象的详细内容,可以使用以下几种方法:

1. 使用 console.log 直接打印对象

console.log 能够正确显示对象的内容,因此可以直接将对象传递给 console.log 而不是将其转换为字符串:

javascript 复制代码
const handleSave = (e: any) => {
    console.log('item copy:', itemCopy);
    console.log('item:', item);
};

2. 使用 JSON.stringify

如果你想将对象转换为字符串并打印,可以使用 JSON.stringify。这将会把对象转换为 JSON 字符串,便于查看其内容:

javascript 复制代码
const handleSave = (e: any) => {
    console.log('item copy:', JSON.stringify(itemCopy, null, 2));
    console.log('item:', JSON.stringify(item, null, 2));
};
  • null 是 JSON.stringify 的 replacer 参数,通常可以保持为 null。
  • 2 是用于缩进的空格数,使 JSON 字符串更具可读性。

3. 检查对象的内容

确保 itemCopy 和 item 是对象且定义了 toString 方法。如果你发现它们的内容在打印时没有按照预期显示,请确保它们是有效的对象而不是其他类型。

示例代码

假设 item 和 itemCopy 是以下结构的对象:

typescript 复制代码
interface QuestionConfiguration {
    id: number;
    name: string;
    defaultFlag?: boolean;
}

const item: QuestionConfiguration = {
    id: 1,
    name: 'Sample Question',
    defaultFlag: true
};

const [itemCopy, setItemCopy] = useState<QuestionConfiguration | undefined>(item);
const [isChecked, setIsChecked] = useState(getDefault);

const handleSave = (e: any) => {
    console.log('item copy:', JSON.stringify(itemCopy, null, 2));
    console.log('item:', JSON.stringify(item, null, 2));
};

在 handleSave 函数中,itemCopy 和 item 将会被清晰地打印到控制台中,便于你调试和检查对象的内容。

总结

  • 避免将对象直接与字符串连接 ,因为这会调用 toString 方法,返回 [object Object]。
  • 使用 console.log 直接打印对象 或 使用 JSON.stringify 来更清晰地查看对象的内容。
相关推荐
燕落南枝8 分钟前
CSS 字体样式:颜色、字体族、倾斜、加粗与装饰
前端·css
鬼手点金11 分钟前
消息的四种角色
java·前端·人工智能·git·深度学习
陈随易15 分钟前
副业搞钱之代办永不过时
前端·后端·程序员
古夕15 分钟前
同样的 font-weight,为什么这个项目的字体就是更细?
前端·javascript
程序员200716 分钟前
抽卡玄学?不,是数学:保底机制下出货概率到底怎么算
前端
excel17 分钟前
请求很慢,问题一定出在服务器吗?看懂浏览器网络耗时
前端·后端
代码猎人22 分钟前
前端怎么熟悉ES6+语法
前端
代码猎人24 分钟前
前端怎么精通Vue2核心原理
前端
测试运维日常笔记25 分钟前
SQL 快速学习笔记:1~2 小时掌握面试重点
笔记·sql·学习
夏天要喝冰可乐25 分钟前
我用 WorkBuddy 做了个「GitHub 考古所」:输入一个用户名,出土你的编程人格档案
前端·github