2017-08-10 75 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上的引用。