• 打印对象的 “精心骗局”


    var  obj = { 
           name : 'zs',
           age : 18  
    }
    
    console.log(obj); // {  name : 'zs' ,age : 18}

    这有什么?平常的声明和打印,很正常啊?是的非常正常,以至于看不出其中的猫腻。再来看下面的例子

    var  obj = { 
           name : 'zs',
           age : 18  
    }
    
    obj.name = 'ls';
    console.log(obj); // {  name : 'ls' ,age : 18}

    这也没什么啊?改变name值然后打印,很是很正常,但是睁大你的眼睛:

    var  obj = { 
           name : 'zs',
           age : 18  
    }
    
    console.log(obj); // {  name : 'zs' ,age : 18},但是展开后就变成 { name : 'ls',age : 18 }
    obj.name = 'ls';

    提前打印,但是后续改变属性值,打印{ name : 'zs' ,age : 18},但是展开后就变成 { name : 'ls',age : 18 },有人说这还有展开?是的每一个对象左边都有一个顶点朝右的灰色等边三角形,点击顶点朝下。

    这是由于打印对象后续操作有改变的情形。有人就说这有什么关系?反正不展开之前打印的表面数据已经可以检测效果了虽然展开是改变对象后的内容但是不展开还是想要看到的数据,这不就可以了吗?没错,想法是对的,但是:如果是一个对象中的属性值也是一个对象,控制台打印的时候就会把二层对象给打印出{...},想要查看必须点击小三角展开这时候必然是改变过后的值了,还能达到预期效果吗? 

    那么又有什么办法呢我就想要瞬时的哪一个阶段打印的对象呢?打印的时候用JSON.stringify包一下变成字符串JSON.stringify(obj),把对象改为字符串,又有人问了直接+" "不就行了,这就是js的神奇之处,直接对象+" "输出的就是[object Object]

  • 相关阅读:
    Javascript闭包(Closure)
    在Javascript中闭包(Closure)
    使用getInstance()方法的原因及作用
    PHPSTORM 常用快捷键
    .htaccess 文件来进行用户组的目录权限访问控制
    a链接中 JS弹出确认对话框方法
    PHP连接mysql数据库报错:Call to undefined function mysql_connect()
    jQuery基础之二
    jQuery基础之一
    jQuery之基础核心(demo)
  • 原文地址:https://www.cnblogs.com/wchjdnh/p/10798225.html
Copyright © 2020-2023  润新知