zoukankan      html  css  js  c++  java
  • 对象副本的拷贝

    因为对象的值都是引用,当按照下面的方法复制时:

    var obj = {'name':'Tom','age':12}
    var copyObj = obj

    obj和copyObj都是同一个基对象的引用,因此改变的值都是基对象的值:

    copyObj.age = 15
    console.log(obj.age)         ------>15

    希望copyObj的改变不影响obj则需要创建一个obj的副本:

    if (Array.isArray(obj)) {
        //如果对象是一个数组,那么利用数组的slice或concat方法
        copyObj = obj.slice()
        // copyObj = obj.concat()
    }else{
        //如果对象不是数组
        copyObj = new Object()
        //1.第一种方法:遍历对象,挨个复制
        for(var key in obj){
            copyObj[key] = obj[key]
        }
        //2.第二种方法:将对象序列化再解析回来(注意:如果对象中有function不能正确复制)
        copyObj = JSON.parse(JSON.stringify(obj))
    }
  • 相关阅读:
    c++ string 的注意事项
    vim 高级技巧
    常用工具
    网络安全测试工具
    RMQ ST算法
    高精度模板
    CodeForces
    CodeForces
    线段树初探
    树状数组初探
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/6927733.html
Copyright © 2011-2022 走看看