利用简单的例子描述下
打印出的结果为
很明显能够看出,对象在打印以后改变,但最终结果仍是改变后的值,所以console.log保存的事对象的引用。debug
可是,在debugger的过程当中我发现,若是在对象改变以前去控制台展开对象看,结果就不太同样了
发现这时候即便后面执行了a.b.c = 2,控制台的输出也没有变化了调试
而若是第一次展开时不所有展开,像这样
那第二次去看的时候,就是会有个很奇怪的现象
此时再展开,就是这样
对象
从以上现象看,好像就是不展开看就是引用,展开看了就不是了;且展开了上一层,只要下一层还没展开,那下一层就仍是引用(现象3)。blog
以上的小结其实有误导,研究了一下我发现缘由远在天边,近在眼前。展开对象后,打印结果右上角有个感叹号,把鼠标放在上面
这句英文意思是:如下结果是刚刚被执行的。这也就很好解释上面的现象了,也就是展开以前保存的是快照,展开对象时 ,才会去引用里执行取值操做。
还发现一个现象,若是在现象2中,看到结果1后收起对象,看结果2时再展开,结果不会有任何变化,也就是说只要展开过一次,第二次就不会再进行取值操做了。字符串
若是想要真正看到console.log所在行对象当时的值,能够用string