美文网首页
【JS】记console.log()的一次踩坑

【JS】记console.log()的一次踩坑

作者: liqingbiubiu | 来源:发表于2017-11-16 21:46 被阅读42次
1.问题概述

今天在调试一个前端页面的时候,使用了console.log()打印变量信息,出现了一个诡异的情况,大致描述为允许下面一段代码:

var obj = {'liqing':'Hero'}
console.log(obj)
obj.test="i'm test

最后控制台竟然打印出了下面的信息:


控制台信息

按照道理说,在打印obj之前是不存在test属性的,可是它偏偏就在那里静静的躺着!

2.填坑

最后查阅资料才知道,原来浏览器在打印对象的时候只是打印的一个对象快照信息,当你在控制台点击展开对象的时候,浏览器才会去读这个对象具体属性,但是那个时候,这段代码早就已经运行完了,‘test’属性也早就存在于obj对象中了。为了验证这个事实,我们使用下面代码:

var obj = {'liqing':'hero'}
console.log(obj);
obj.test="i'm test"
obj.__defineGetter__('liqing', function(){ console.log('You are trying to get property `liqing`');return 'hero'; })

当我们运行这段代码的时候就酱紫的:


图2-1

但是,当我们展开控制台打印的对象后我们看到:


图2-2
说明,浏览器是在我们点开对象属性的时候才去读取存储在内存中的属性值!
3.结论

以后用console.log()打印对象信息可得留点儿心眼了!!!

注:文中如有任何错误,请各位批评指正!

相关文章

  • 【JS】记console.log()的一次踩坑

    1.问题概述 今天在调试一个前端页面的时候,使用了console.log()打印变量信息,出现了一个诡异的情况,大...

  • JS踩坑记

    1、前端计算占比时,遇到四舍五入后加和不是100%的场景,该如何解决? 没有完美封装的接口,参考网文:https:...

  • [ANR Warning]onMeasure time too

    ConstraintLayout 踩坑记一次封装组合控件时的坑,我才用了集成 ConstraintLayout 来...

  • springboot集成swagger2深坑

    记录一次swagger2踩坑记,网上资料杂乱而不完整,自己踩的坑还算比较多,记录下自己的解决历程 一、首次来看看遇...

  • 移动端的头尾固定问题

    新起了个移动端项目,在头位固定问题上又踩了一次踩过的坑。爬起来之后弹弹土,乖乖的坐下来码字,把踩坑换来的经验教训记...

  • download.js踩坑记

    问题 1 文件下载后,内容是url地址 2 下载文件名是URL的后缀 第一个问题解决方法 // 源码片段 url...

  • JS踩坑

    1. 数组和对象是通过引用来赋值 先看下面栗子 简单的说:number,string类型都是基本类型,而基本类型存...

  • Android Material Design 踩坑记(2)

    Android Material Design 踩坑记(1) CoordinatorLayout Behav...

  • 小程序 button分享自定义页面 open-type="sha

    aaa.wxml aaa.js 踩坑纪实:创建page的js底部自有onShareAppMessage事件自定义的...

  • 原生App植入React Native 踩坑记

    原生App植入React Native 踩坑记 为什么我踩坑了有一个需求要去可以在当前工程的feature/RN ...

网友评论

      本文标题:【JS】记console.log()的一次踩坑

      本文链接:https://www.haomeiwen.com/subject/rsscvxtx.html