JSON对象单一行为的混淆?

时间:2017-08-10 06:20:01

标签: javascript json

对客户端应用程序开发不熟悉,需要对下面提到的问题有所了解。

我有一个对象var obj1={'name':'Sachin'}

我将该对象分配给obj2

var obj2=obj1.

现在我的obj2obj1个对象都是相同的

现在使用obj2我更改名称属性值,如

obj2.name="Dravid";

现在我的obj1obj2两个名称属性值都变为'Dravid',因为JSON对象的'sigletone'行为?这是对的吗?

现在我的问题是:

如果我让我的obj1为空,就像

一样
   obj1={}

那么为什么我的obj2没有变成空?

仍显示obj2={'name':'Dravid'}

背后的原因是什么?

请帮我解决这个问题。

提前感谢...

2 个答案:

答案 0 :(得分:2)

我相信当您完成第一个作业obj1然后将obj1指定给obj2时,您正在将共享引用复制到内存中的相同位置。然后,当您将空{ }分配给obj1时,您将在内存中创建一个新对象,替换另一个引用。那时obj1obj2有不同的引用

答案 1 :(得分:0)

在Javascript中对象作为引用传递。因此,当您进行更改时,obj1和obj2引用相同的对象,您只更改由2个变量引用的一个对象。如果将obj1指定给另一个对象,则它对obj2上的引用没有影响。