zoukankan      html  css  js  c++  java
  • 深拷贝

    /**
     * 深拷贝
     * @param {Object} obj 要拷贝的对象
     */
    function deepClone(obj ={}){
        if(typeof obj !== 'object'|| obj == null){
            //obj不是对象或者是null,直接返回
            return obj
        }
    
        //初始化返回结果
        let result
        if(obj instanceof Array){
            result = []  //数组
        }else{
            result = {}  //对象
        }
        
        for(let key in obj){
            //保证key不是原型的属性
            if(obj.hasOwnProperty(key)){
                //递归调用
                result[key] = deepClone(obj[key])
            }
        }
        return result
    }
    const obj1 = {
        age : 20,
        name : 'xxx',
        address : {
            city : 'beijing'
        },
        arr:['a','b','c']
    }
    
    const obj2 = deepClone(obj1)
    obj2.address.city ='shanghai'
    console.log('obj1.address.city:' + obj1.address.city)
    console.log('obj2' + JSON.stringify(obj2))

    运行结果:

  • 相关阅读:
    vi
    head
    uniq
    sort
    所谓静态绑定
    债务
    不确
    tar
    VMWare虚拟系统上网设置 及 三种模式详解
    awk
  • 原文地址:https://www.cnblogs.com/marshhu/p/11939863.html
Copyright © 2011-2022 走看看