卡火火不吃皮皮鱼 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日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan