js console.log打印对象时属性缺失的解决方法


Posted in Javascript onMay 23, 2019

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打印对象时属性缺失的解决方法

总结 : 以上两种方法都可以获取代码运行时的对象状态,但是比较 推荐第一种方法,因为当内容非常多时,第一种方法可以展开数据,有利于我们更快捷清晰地获取目标信息。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 屏蔽鼠标右键脚本附破解方法
Dec 03 Javascript
JavaScript入门之对象与JSON详解
Oct 21 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
Jul 04 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
JS弹出对话框实现方法(三种方式)
Dec 18 Javascript
纯JS实现弹性导航条效果
Mar 06 Javascript
强大的 Angular 表单验证功能详细介绍
May 23 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
Vue Socket.io源码解读
Feb 07 Javascript
vue移动端弹框组件的实例
Sep 25 Javascript
js+html实现周岁年龄计算器
Jun 25 Javascript
在Echarts图中给坐标轴加一个标识线markLine
Jul 20 Javascript
Node.js+ELK日志规范的实现
May 23 #Javascript
jquery+php后台实现省市区联动功能示例
May 23 #jQuery
js尾调用优化的实现
May 23 #Javascript
浅谈redux, koa, express 中间件实现对比解析
May 23 #Javascript
Express结合Webpack的全栈自动刷新
May 23 #Javascript
ajax跨域访问遇到的问题及解决方案
May 23 #Javascript
简单了解JavaScript异步
May 23 #Javascript
You might like
php 删除记录实现代码
2009/03/12 PHP
20个PHP常用类库小结
2011/09/11 PHP
PHP7匿名类用法分析
2016/09/26 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
jquery中常用的SET和GET
2009/01/13 Javascript
关于图片按比例自适应缩放的js代码
2011/10/30 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
2014/10/14 Javascript
javascript实现动态加载CSS
2015/01/26 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
vue页面使用阿里oss上传功能的实例(二)
2017/08/09 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
jQuery实现的点击按钮改变样式功能示例
2018/07/21 jQuery
Vue Prop属性功能与用法实例详解
2019/02/23 Javascript
一文快速了解JQuery中的AJAX
2019/05/31 jQuery
小程序分页实践之编写可复用分页组件
2019/07/18 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
轻松实现python搭建微信公众平台
2016/02/16 Python
详解 Python 与文件对象共事的实例
2017/09/11 Python
python如何读写json数据
2018/03/21 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
python3实现弹弹球小游戏
2019/11/25 Python
解决pycharm启动后总是不停的updating indices...indexing的问题
2019/11/27 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
工程师求职简历的自我评价分享
2013/10/10 职场文书
数控专业大学生的自我鉴定
2013/11/13 职场文书
劲霸男装广告词
2014/03/21 职场文书
初中作文评语集锦
2014/12/25 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书