zoukankan      html  css  js  c++  java
  • js深拷贝、浅拷贝

    浅拷贝:

    只针对当前对象的属性进行拷贝,若当前对象的属性是引用类型时,这个不考虑,不进行拷贝。
    若属性是引用类型,拷贝后引用的是地址,如果进行更改,会影响拷贝的原对象属性。

    深拷贝:
    针对当前对象的数据的所有引用结构都拷贝一份,数据在内存中是独立的。
    若属性是引用类型,如果进行更改,不会影响拷贝的原对象属性。

    js使用扩展方法实现深拷贝

    Object.prototype.DeepCopy = function () {
                // 1, 创建一个对象
                var temp = {};
                // 2, 拷贝属性, 判断如果是引用类型需要深拷贝
                for (var k in this) {
                    if (typeof this[k] === 'object') {
                        temp[k] = this[k].DeepCopy();
                    } else {
                        temp[k] = this[k];
                    }
                }
                // 3, 返回对象
                return temp;
            };

     测试:

    var arr = [{ name: "j1" }, { name: "j2" }, { name: "j3" }];
    
                var arrtoo = arr.DeepCopy();
                arrtoo[1].name = "cccc";
    
                alert(arr[1].name);
                alert(arrtoo[1].name);

    结果:j2  cccc

    扩展方法:http://www.cnblogs.com/kissdodog/p/3386480.html

  • 相关阅读:
    typora 页内跳转
    shell脚本搭建redis集群
    Html
    python json模块
    jenkins 问题合集
    day05 每日一行
    day04 每次一行
    day03 每日一行
    day02
    day02 每日一行
  • 原文地址:https://www.cnblogs.com/xsj1989/p/7066430.html
Copyright © 2011-2022 走看看