满口金牙 2022-12-16 14:30 采纳率: 91.1%
浏览 37
已结题

js 如果外面不套层的情况下: 这个两对象如果浅拷贝合并

object.assign()         对象的第一层属性 是深拷贝

{name:1},
{age:2}
如果外面不套层的情况下:
这个两对象如何浅拷贝合并,还有什么可用方法? 
  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-12-16 17:12
    关注

    没搞,a.name是普通类型,值引用,只有对象才能是地址引用实现浅拷贝。

    当然要弄也不是不可以,就是麻烦,需要用到Proxy,要合并的对象每个生成一个proxy,然后这些proxy放一个对象里面,在对这个总的对象生成一个proxy,添加get,set拦截

    示例如下

    
        let a = {name: 1}
        let b = { age: 2 }
        let pa = new Proxy(a, { })
        let pb = new Proxy(b, {})
        let t = { name: pa, age: pb };
    
    
        let c = new Proxy(t, {
            get(target, propertyName) {
                return target[propertyName][propertyName]
            },
            set(target, propertyName,value) {
                target[propertyName][propertyName]=value
            }
        })
    
        function testFunc(str) {
            a.name=3
            console.log(`test1----------a:`, a.name)
            console.log(`test-----------c:`, c.name)
            c.name='x'
            console.log(`test1----------a:`, a.name)
            console.log(`test-----------c:`, c.name)
        }
        testFunc()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月24日
  • 已采纳回答 12月16日
  • 修改了问题 12月16日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上
  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画