首页 新闻 会员 周边

js对象赋值给对象的问题

0
[待解决问题]

比如我有二个对象  一个是A一个是B

 

我通过 直接 A=B 的方式将B赋给A

但是我发现,我将A对象的属性改了之后,B对应的属性也改了。

使用angular.clone()或者jquery clone之后,就不会有这种问题。

一直很郁闷,是不是对象引用指向了同一处还是怎么,新手求解。

又是没有bug的一天的主页 又是没有bug的一天 | 初学一级 | 园豆:149
提问于:2017-09-04 15:30
< >
分享
所有回答(3)
0

百度:深复制,浅复制

吴瑞祥 | 园豆:29449 (高人七级) | 2017-09-04 15:33
0

javascript中有两种类型,一种叫做基本数据类型,一种就是引用类型,

基本数据类型有 String Number Boolean undefined null 

引用数据类型有 Object Array 等 (Function Regexp)

因为对象是引用类型, 看字面意思,引用 ,引用的一个数据,所以在直接b={},a=b的时候,a指向了b,b指向了对{}的引用,注意,这里b和{}是两个独立的,b指向了{} 。 所以a=b,a也指向了{} ,所以改a.name的时候b.name也改变了,因为他们指向同一个{} 

angular.clone()

这个方法的字面意思是 “克隆”  意思指可以从对象b克隆一个{}到对象a

另外还有浅复制和深复制的概念,这是针对对象里的对象,或者对象里的引用类型的,具体你可以百度一下 

张泰峰 | 园豆:20 (初学一级) | 2017-09-05 12:29
0

对象是引用类型,使用 a = b 的时候,这个时候叫取别名,他们两个指向的是同一个内存,

muamaker | 园豆:763 (小虾三级) | 2017-09-05 18:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册