2017-08-10 61 views
1

客戶端應用程序開發新手,需要對下面提到的問題有一定的瞭解。在JSON對象中的困惑行爲?

我有一個對象var obj1={'name':'Sachin'}

我該對象分配給obj2

var obj2=obj1. 

現在我obj2obj1對象都是同一

現在,通過使用obj2更改喜歡這個名字的屬性值

obj2.name="Dravid"; 

現在我的obj1obj2由於JSON對象的'sigletone'行爲,兩個名稱屬性值都變成了'Dravid'?這是對的嗎?

現在我的問題是:

,如果我做了我obj1是空喜歡

obj1={} 

那麼爲什麼我的obj2沒有打開是空的?

它仍然顯示obj2={'name':'Dravid'}

什麼是背後的原因是什麼?

請幫我解決這個問題。

在此先感謝...


+1

請注意,'JSON'是一個字符串,而不是JavaScript對象 – guest271314

回答

2

我相信,當您第一次轉讓,obj1然後分配給obj1obj2,您要複製一個共享的參考內存中的相同位置。然後,當您將空{ }指定爲obj1時,您將在內存中創建一個新對象,替換其他參考。此時obj1obj2有不同的引用

0

在Javascript中,對象作爲引用傳遞。因此,obj1和obj2引用同一個對象時,只需更改一個由2個變量引用的對象。如果將obj1分配給另一個對象,則它不會影響obj2上的引用。