小程序
小游戏
企业微信
微信支付
扫描小程序码分享
定义两个全局对象A和对象B,用户登陆成功后把值(用户信息)付给两个对象(开始时值一样),全局对象A的值始终不变
进行某一操作判断:true的时候把全局对象B的属性Uid改为某值,但是此时对象A也跟着变了
想问怎么才能确保A不变,只变B,可以实现吗
4 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
需要用到js深拷贝,@Charb 讲的方式也可以,但是太麻烦了,简单粗暴的方式:
假如 userInfo 为用户信息对象,
let A = JSON.parse(JSON.stringify(userInfo)) let B = JSON.parse(JSON.stringify(userInfo))
这样修改A,B对象的值,都不会相互干扰了,
当然也可以使用 ES6 的 Object.assign() 方法,也能实现深拷贝,但是这个方法仅限于简单对象(就是,对象里面的属性都为简单类型,没有对象/数组之类的类型)
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
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() 方法,也能实现深拷贝,但是这个方法仅限于简单对象(就是,对象里面的属性都为简单类型,没有对象/数组之类的类型)
js深拷贝了解一下去。
刚开始赋值是 A=C , B=C, AB 指向的是同一个对象,改变的时候另一个也会改变,你这样先声明 A={} B={},然后再把c中每个字段的值赋给AB 例如 A.para1=C.para1,然后再改变B.uid的时候A中就不会改变了
注意引用类型的赋值,登录成功的时候赋值拷贝一下对象就行了。