登录用户Uid是否可以切换?
发布于 7 年前 作者 yan38 9251 次浏览 来自 官方Issues

定义两个全局对象A和对象B,用户登陆成功后把值(用户信息)付给两个对象(开始时值一样),全局对象A的值始终不变

进行某一操作判断:true的时候把全局对象B的属性Uid改为某值,但是此时对象A也跟着变了

想问怎么才能确保A不变,只变B,可以实现吗

4 回复

js深拷贝了解一下去。

刚开始赋值是 A=C , B=C, AB 指向的是同一个对象,改变的时候另一个也会改变,你这样先声明 A={} B={},然后再把c中每个字段的值赋给AB 例如 A.para1=C.para1,然后再改变B.uid的时候A中就不会改变了

注意引用类型的赋值,登录成功的时候赋值拷贝一下对象就行了。

需要用到js深拷贝,@Charb 讲的方式也可以,但是太麻烦了,简单粗暴的方式:

假如 userInfo 为用户信息对象,

let A = JSON.parse(JSON.stringify(userInfo))
let B = JSON.parse(JSON.stringify(userInfo)) 

这样修改A,B对象的值,都不会相互干扰了,

当然也可以使用 ES6 的 Object.assign() 方法,也能实现深拷贝,但是这个方法仅限于简单对象(就是,对象里面的属性都为简单类型,没有对象/数组之类的类型)

回到顶部