对客户端应用程序开发不熟悉,需要对下面提到的问题有所了解。
我有一个对象var obj1={'name':'Sachin'}
我将该对象分配给obj2
var obj2=obj1.
现在我的obj2
和obj1
个对象都是相同的
现在使用obj2
我更改名称属性值,如
obj2.name="Dravid";
现在我的obj1
和obj2
两个名称属性值都变为'Dravid',因为JSON对象的'sigletone'行为?这是对的吗?
现在我的问题是:
如果我让我的obj1
为空,就像
obj1={}
那么为什么我的obj2
没有变成空?
仍显示obj2={'name':'Dravid'}
背后的原因是什么?
请帮我解决这个问题。
提前感谢...
答案 0 :(得分:2)
我相信当您完成第一个作业obj1
然后将obj1
指定给obj2
时,您正在将共享引用复制到内存中的相同位置。然后,当您将空{ }
分配给obj1
时,您将在内存中创建一个新对象,替换另一个引用。那时obj1
和obj2
有不同的引用
答案 1 :(得分:0)
在Javascript中对象作为引用传递。因此,当您进行更改时,obj1和obj2引用相同的对象,您只更改由2个变量引用的一个对象。如果将obj1指定给另一个对象,则它对obj2上的引用没有影响。