返回顶部
首页 > 资讯 > 前端开发 > VUE >js中console.log打印对象时属性缺失怎么办
  • 445
分享到

js中console.log打印对象时属性缺失怎么办

2024-04-02 19:04:59 445人浏览 安东尼
摘要

这篇文章主要介绍js中console.log打印对象时属性缺失怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 序在编写代码时,我们常常用 console.log() 的方式

这篇文章主要介绍js中console.log打印对象时属性缺失怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

1. 序

在编写代码时,我们常常用 console.log() 的方式将信息在控制台中打印出来以帮助我们进行前端调试。一般情况下,我们打印普通值都没有问题,但在打印对象类型时,我们就需要注意点了,要不然可能会出现不符合期望的结果。

2. console.log()输出对象属性缺失

  • 首先,定义了一个 cat对象 ,其拥有 name, age, color, birthday 四个属性。

  • 接着,我们又定义了一个函数 test ,它接收一个对象作为参数。调用test函数时,我们想知道传入test函数的参数是怎样的,会先调用 console.log(obj) 将传入的对象打印出来,最后在函数内的某处删除传入对象的 name 属性。

那么,此时将 cat 对象作为参数调用 test 函数,控制台打印出来的信息将会是什么呢?会是我们预想的传入时参数的样子吗?

const cat = {
 name: '喵喵',
 age: '2',
 color: 'white',
 birthday: '1月1号'
}

function test(obj) {
 console.log(obj)
 //这里有段很长的代码...
 delete obj.name
}

test(cat)

控制台输出信息:

js中console.log打印对象时属性缺失怎么办

咋一看,没问题,输出的结果的确是我们传入时的样子。但实际中,传入的对象可能具有很多属性,那么我们想要看完整的信息就必须将输出结果展开。如下:

js中console.log打印对象时属性缺失怎么办

展开的信息中,我们可以看到结果少了 name 属性,细心的小伙伴可以发现还多了一个感叹号的标志(鼠标悬浮的文字:Value below was evaluated just now.)。咦,奇怪了,我们不是在test函数内的第一行代码就输出参数的信息的吗,怎么会少了 name 属性? 其实感叹号的内容已经说明了,我们展开的信息其实是刚刚获取到的结果,也就是代码执行后的结果,test函数中有一段 delete obj.name 的代码,执行完后,obj对象当然就没有 name

属性啦。在复杂的项目中,对象属性会很多,代码中的不知哪一处也可能会删除了对象的某些属性,这时我们打印出来的结果可能就会跟传入时的不一样,这种情况下我们可能就会一头雾水了。那么如何获取正确的结果呢?

3. 获取正确的结果

由于展开 console.log() 的结果并不是我们代码所处位置那个时间点的对象的拷贝,故我们想要在代码执行到那个位置时的那个时间点对应的对象状态,只要在那时输出 对象的副本 即可。

3.1 方法1:对象展开

const cat = {
 name: '喵喵',
 age: '2',
 color: 'white',
 birthday: '1月1号'
}

function test(obj) {
 console.log({...obj}) //使用es6的对象展开符操作,获取到obj的副本。
 //这里有段很长的代码...
 delete obj.name
}

test(cat)

这时,我们得到的就是 console.log() 执行时间点时obj的状态啦。

js中console.log打印对象时属性缺失怎么办

3.2 方法2: JSON.stringfy()看字符串

const cat = {
 name: '喵喵',
 age: '2',
 color: 'white',
 birthday: '1月1号'
}

function test(obj) {
 console.log(JSON.stringify(obj)) //调用JSON.stringify()方法将对象转化为字符串
 //这里有段很长的代码...
 delete obj.name
}

test(cat)

同样,此时我们也可以得到代码运行时间点时的obj对象状态。

js中console.log打印对象时属性缺失怎么办

以上是“js中console.log打印对象时属性缺失怎么办”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: js中console.log打印对象时属性缺失怎么办

本文链接: https://lsjlt.com/news/66811.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • js中console.log打印对象时属性缺失怎么办
    这篇文章主要介绍js中console.log打印对象时属性缺失怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 序在编写代码时,我们常常用 console.log() 的方式...
    99+
    2024-04-02
  • js怎么判断对象是否有属性
    这篇文章给大家分享的是有关js怎么判断对象是否有属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点击,给用户提供更好的体验。2.可以处理表单,...
    99+
    2023-06-14
  • java怎么打印list中的对象
    在Java中,可以使用循环遍历List中的对象,并打印出每个对象的内容。可以通过以下代码实现: List<String>...
    99+
    2024-03-13
    java
  • JavaScript中怎么删除对象属性
    今天就跟大家聊聊有关JavaScript中怎么删除对象属性,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1.将属性设置为 undefin...
    99+
    2024-04-02
  • CSS中margin-top属性失效怎么办
    这篇文章主要介绍了CSS中margin-top属性失效怎么办的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇CSS中margin-top属性失效怎么办文章都会有所收获,下面我们一起来看看吧。常出现两种情况:(一)...
    99+
    2023-07-04
  • 怎么在JavaScript中遍历对象属性
    本篇文章为大家展示了怎么在JavaScript中遍历对象属性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为Java...
    99+
    2023-06-14
  • vue中watch检测不到对象属性的变化怎么办
    小编给大家分享一下vue中watch检测不到对象属性的变化怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!正文<template>  <div> &n...
    99+
    2024-04-02
  • java在创建对象时怎么给属性赋值
    在Java中,可以通过以下几种方式给对象的属性赋值:1. 使用构造方法:在创建对象时,通过传递参数给构造方法来赋值。例如:javap...
    99+
    2023-10-18
    java
  • 怎么使用JS动态合并两个对象的属性
    这篇文章给大家分享的是有关怎么使用JS动态合并两个对象的属性的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们可以使用扩展操作符(...)将不同的对象合并为一个对象,这也是合并两...
    99+
    2024-04-02
  • 怎么在JavaScript中为对象添加属性
    本篇文章给大家分享的是有关怎么在JavaScript中为对象添加属性,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript是什么JavaScript是一种直译式的脚...
    99+
    2023-06-14
  • VB.NET中Process的属性与对象怎么用
    这篇文章主要介绍VB.NET中Process的属性与对象怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!你再也不需要使用Win32应用编程接口或者VB的Shell函数来启动外部应用程序了。因为你可以使用.NET框...
    99+
    2023-06-17
  • ASP.NET中HttpContext对象下的属性怎么用
    这篇文章主要讲解了“ASP.NET中HttpContext对象下的属性怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET中HttpContext对象下的属性怎么用”吧!一、H...
    99+
    2023-06-30
  • 怎么在java8项目中对List对象属性去重
    怎么在java8项目中对List对象属性去重?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。第一种: 不使用java8 private Lis...
    99+
    2023-06-14
  • java中怎么将对象属性值都清空
    可以使用以下两种方法将Java对象的属性值都清空:1. 使用构造函数重新创建一个新的对象:可以通过创建一个新的对象来清空原对象的属性...
    99+
    2023-09-26
    java
  • Vue改变数组中对象的属性不重新渲染View怎么办
    这篇文章主要介绍Vue改变数组中对象的属性不重新渲染View怎么办,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在解决问题之前,我们先来了解下 vue响应性原理: Vue最显著的一个...
    99+
    2024-04-02
  • html5中返回AudioTrackList对象的属性audioTracks怎么用
    小编给大家分享一下html5中返回AudioTrackList对象的属性audioTracks怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实例获得可用音轨的数量:myVid=doc...
    99+
    2024-04-02
  • html5中返回TimeRanges对象的属性buffered怎么用
    小编给大家分享一下html5中返回TimeRanges对象的属性buffered怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!实例获得视频的第一段缓冲范围(部分),以秒计:myVid...
    99+
    2024-04-02
  • vue中怎么给对象动态添加属性和值
    vue中怎么给对象动态添加属性和值,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、背景介绍:在vue中请求接口中,一个请求方法可能对应后台两...
    99+
    2024-04-02
  • Vue3中怎么使用watch监听对象的属性值
    这篇文章主要介绍“Vue3中怎么使用watch监听对象的属性值”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue3中怎么使用watch监听对象的属性值”文章能帮助大家解决问题。Vue3 中使用 w...
    99+
    2023-07-04
  • html5中返回一个MediaError对象的属性error怎么用
    这篇文章给大家分享的是有关html5中返回一个MediaError对象的属性error怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实例获得视频的错误状态:myVid=do...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作