利用簡單的例子描述下
打印出的結果爲
很明顯能夠看出,對象在打印以後改變,但最終結果仍是改變後的值,所以console.log保存的事對象的引用。debug
可是,在debugger的過程當中我發現,若是在對象改變以前去控制檯展開對象看,結果就不太同樣了
發現這時候即便後面執行了a.b.c = 2,控制檯的輸出也沒有變化了調試
而若是第一次展開時不所有展開,像這樣
那第二次去看的時候,就是會有個很奇怪的現象
此時再展開,就是這樣
對象
從以上現象看,好像就是不展開看就是引用,展開看了就不是了;且展開了上一層,只要下一層還沒展開,那下一層就仍是引用(現象3)。blog
以上的小結其實有誤導,研究了一下我發現緣由遠在天邊,近在眼前。展開對象後,打印結果右上角有個感嘆號,把鼠標放在上面
這句英文意思是:如下結果是剛剛被執行的。這也就很好解釋上面的現象了,也就是展開以前保存的是快照,展開對象時 ,纔會去引用裏執行取值操做。
還發現一個現象,若是在現象2中,看到結果1後收起對象,看結果2時再展開,結果不會有任何變化,也就是說只要展開過一次,第二次就不會再進行取值操做了。字符串
若是想要真正看到console.log所在行對象當時的值,能夠用string