js/浅层克隆/深层克隆/拷贝

本文详细介绍了JavaScript中的浅层克隆和深层克隆的概念及其实现方式。通过实例展示了浅层克隆如何导致引用值的问题,并提供了对应的解决方案——深层克隆。此外,还讲解了三目运算符的使用以及字符串比较的规则。对于理解JavaScript中对象复制的原理和实践具有指导意义。
摘要由CSDN通过智能技术生成

克隆

浅层克隆

浅层克隆,引用值拷贝,另一个也变。

            let obj = {
                name : 'abc',
                age : 123,
                sex : 'female',
                card : ['aa','bb']
            }

            let obj1 ={}

            function clone(orgin,target){
                let target = target || {}
                for(let prop in origin){
                    target[prop] = origin[prop];
                }
            }
            clone(obj,obj1);

深层克隆

解决浅层克隆,引用值的问题

            let obj = {
                name : 'abc',
                age : 123,
                sex : 'female',
                card : ['aa','bb']
            }

            let obj1 ={}

            function deepClone(origin,target){
                let target = target || {},
                    toStr = Object.prototype.toString()
                    arrStr = '[object Array]';

                 for(let prop in origin ){
                     if(origin.hasOwnProperty(prop)){
                        if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object'){
                            if(toStr.call(origin[prop]) == arrStr){
                                target[prop] = [];
                            }else{
                                target[prop] = {};
                            }
                            deepClone(origin[prop],target[prop])
                        }else{
                            target[prop] = origin[prop];
                        }



                     }
                 }   
                 return target;
            }

三目运算符

条件判断? 是:否 并且返回值

  1. 字符串与字符串相比 是逐位比对ASCII码 if ‘10’ > ‘9’ false!

原文地址:https://www.qianqianhaiou.cn/index.php/archives/85/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值