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

  • 相关阅读:
    细说 ASP.NET Cache 及其高级用法【转】
    类变量和实例变量的区别是什么?
    【转】细说Cookie
    【转】细说 Form (表单)
    PHP API中,MYSQL与MYSQLI的持久连接区别
    Extending_and_embedding_php翻译
    linux常见面试题及答案
    手机辐射查询
    php5.3 PHP5.4 PHP5.5 新特性/使用PHP5.5要注意的
    sqoop安装遇到的问题
  • 原文地址:https://www.cnblogs.com/wishyouhappy/p/3741222.html
Copyright © 2011-2022 走看看