卡火火不吃皮皮鱼 2022-11-17 18:59 采纳率: 100%
浏览 15
已结题

如何在研究深拷贝时,敲完代码控制台报错说ff对象未定义,检查了一下和博主敲得代码一样的啊,百度了有些是说把js代码放在后面?

在研究深拷贝时,敲完代码控制台报错说 f f 未定义,没有拷贝成功 ,检查了一下和博主敲得代码一样的啊,百度了有些是说把js代码放在后面,但是试过还是不行

  function deepClone(source){
        //source是要转的值
        //构造器的指向:[]=> Array(基类) {}=> Object
        const targetObj = source.constructor === Array ? [] : {};
        //通过constructor 判断是数组还是对象
        for(let keys in source){
            //判断他有没有这个属性
            if(source.hasOwnProperty(keys)){
                //当前循环的值可能有哪几种情况
                //keys=>3
                    //引用数据类型
                if(source[keys] && typeof source[keys] === 'object'){
                    targetObj[keys] = source[keys].constructor === Array ? [] : {};
                    //递归,一遍一遍直到查完为止
                    targetObj[keys] = deepClone(source[keys])
                }else{
                    //基本数据类型,直接赋值
                    targetObj[keys]= source[keys];
                }

            }
        }
    }
    let objC={
        ff:'name',
        gg:1,
        obj:{str:'111',age:12},
        arr:[1,2,3,4]
    }
    let newObjC=deepClone(objC);
    newObjC.ff ="花花";
    newObjC.arr.push("火火");
    console.log(objC,newObjC);

  • 写回答

1条回答 默认 最新

  • qq_40567849 2022-11-17 19:30
    关注

    你的deepClone没有return targetObj,所以newObjC是undefined

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 修改了问题 11月17日
  • 创建了问题 11月17日

悬赏问题

  • ¥15 学校优化算法sbo和蚁群算法怎么结合
  • ¥20 Apache poi使用问题
  • ¥21 matlab怎么求时域信号的二阶导数
  • ¥15 判断两个表是否完全相同
  • ¥15 java map类型数据格式,如何快速通过前缀匹配元素
  • ¥15 stc12c5a60s2、QMC5883L、LCD1602组合测量磁场所需程序
  • ¥20 Win11测试yolov4,“找不到nvcuda.dll”怎么办?
  • ¥15 simulink绘制bode图
  • ¥15 php_network_getaddresses: getaddrinfo failed: Name or service not known
  • ¥15 用msg发消息出现的问题