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

    js实现深拷贝
    1. 通过 JSON 对象实现深拷贝
    //通过js的内置对象JSON来进行数组对象的深拷贝
    function deepClone2(obj) {
      var _obj = JSON.stringify(obj),
        objClone = JSON.parse(_obj);
      return objClone;
    }
    
    1. 使用递归的方式实现深拷贝
        function isArray(obj) {
            if (!Array.prototype.isArray) {
                return Object.prototype.toString.call(obj) === '[object Array]'
            }
            else {
                return Array.isArray(obj)
            }
        }
        function deepClone (obj) {
            let newObj
            if (typeof obj === 'Object') {
                if (isArray(obj)) {
                    newObj = []
                    for (let i in obj) {
                        newObj.push(deepClone(obj[i]))  
                    }
                } else if (obj === null) {
                    newObj = null
                } else if (obj.constructor === RegExp) {
                    newObj = obj
                } else {
                    newObj = {}
                    for (let i in obj) {
                        newObj[i] = deepClone(obj[i])
                    }
                }
            } else {
                newObj = obj
            }
            return newObj
        }
    
    1. Object.assign()拷贝
    当对象中只有一级属性,没有二级属性的时候,此方法为深拷贝,但是对象中有对象的时候,此方法,在二级属性以后就是浅拷贝。
    
  • 相关阅读:
    java实现万年历
    XCTF 逆向 re1-100
    iOS多线程开发之GCD
    Hexo Next统计文章访问量
    Name/Value 配對和物件
    Mac系统Git生成ssh公钥
    《大话数据结构》三
    C++指针和引用
    英语语法讲解第一课句子成分-表语
    String-mainipulation7
  • 原文地址:https://www.cnblogs.com/fenfen/p/13650365.html
Copyright © 2011-2022 走看看