zoukankan      html  css  js  c++  java
  • javascript对象拷贝

    浅拷贝


    浅拷贝函数:

    function copy(p){
        var c = {};
        for (var i in p){
            c[i] = p[i];
        }
        c.uber = p;
        return c;
    }

    测试:

    var People = {
      nation:'中国'
    };
    People.birthPlaces = ['北京','上海','香港'];
    
    var Teacher = copy(People);
    Teacher.birthPlaces.push('厦门');
    console.log(Teacher.birthPlaces);
    console.log(People.birthPlaces);
    console.log(Teacher.nation);
    console.log(People.nation);

    结果:

    ["北京", "上海", "香港", "厦门"] 
    ["北京", "上海", "香港", "厦门"]  //People的birthPlaces变了
    中国
    中国 

    深拷贝


    深拷贝函数:

    //深拷贝(递归调用浅拷贝)
    function deepCopy(p, c) {
        var c = c || {};
        for (var i in p) {
          if (typeof p[i] === 'object') {
            c[i] = (p[i].constructor === Array) ? [] : {};
            deepCopy(p[i], c[i]);
          } else {
             c[i] = p[i];
          }
        }
        return c;
    }

    测试:

    var People = {
      nation:'中国'
    };
    People.birthPlaces = ['北京','上海','香港'];
    
    var Teacher = deepCopy(People);
    Teacher.birthPlaces.push('厦门');
    console.log(Teacher.birthPlaces);
    console.log(People.birthPlaces);
    console.log(Teacher.nation);
    console.log(People.nation);

    结果:

    ["北京", "上海", "香港", "厦门"] VM211:22
    ["北京", "上海", "香港"] VM211:23
    中国 VM211:24
    中国 

     参考:http://www.ruanyifeng.com/blog

  • 相关阅读:
    【转载】RNA-seq测序方法
    NeuN神经元核抗原
    单细胞测序
    安装cytoscape时的折腾
    linux文件目录
    结合自己做过的数据,对cosmic signature理解
    减数分裂meiosis-有丝分裂miosis-染色体-DNA-等位基因
    AD发生了什么
    FDR的含义
    置换检验—结合GSEA解释
  • 原文地址:https://www.cnblogs.com/wishyouhappy/p/3741222.html
Copyright © 2011-2022 走看看