美文网首页
JS深拷贝的实现方法

JS深拷贝的实现方法

作者: Thesand | 来源:发表于2020-08-13 13:58 被阅读0次

    1、使用递归的方式实现深拷贝

    
    /**
     * 深拷贝
     * @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
    }
    
    

    2、通过 JSON 对象实现深拷贝

    注意:JSON对象实现深拷贝无法实现对对象中方法的深拷贝

    
    //通过js的内置对象JSON来进行数组对象的深拷贝
    function deepClone2(obj) {
      var _obj = JSON.stringify(obj),
        objClone = JSON.parse(_obj);
      return objClone;
    }
    
    

    相关文章

      网友评论

          本文标题:JS深拷贝的实现方法

          本文链接:https://www.haomeiwen.com/subject/hqbbdktx.html