收藏
回答

登录用户Uid是否可以切换?

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

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

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

回答关注问题邀请回答
收藏

4 个回答

  • @哈
    @哈
    2020-01-10

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

    假如 userInfo 为用户信息对象,

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

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

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


    2020-01-10
    有用 1
    回复 2
    • Charb
      Charb
      2020-01-10
      直接了当,简单粗暴,666
      2020-01-10
      回复
    • 米花花
      米花花
      2020-01-10
      用上了,感谢感谢
      2020-01-10
      回复
  • 老张
    老张
    2020-01-10

    js深拷贝了解一下去。

    2020-01-10
    有用
    回复 1
    • 米花花
      米花花
      2020-01-10
      好哒,这就去,谢谢
      2020-01-10
      回复
  • Charb
    Charb
    2020-01-10

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

    2020-01-10
    有用
    回复 1
    • 米花花
      米花花
      2020-01-10
      这个试了可以,谢谢^v^
      2020-01-10
      回复
  • 增Lee
    增Lee
    2020-01-10

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

    2020-01-10
    有用
    回复 1
    • 米花花
      米花花
      2020-01-10
      好的,谢谢,我看看去
      2020-01-10
      回复
登录 后发表内容
问题标签