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

    // svg.data = DevSvg; // 这样是共用一个DevSvg对象
        
    // svg.data = $.extend({}, DevSvg); // 浅拷贝,二级对象还是传址
        
    // svg.data = Object.assign({}, DevSvg); // 浅拷贝,二级对象还是传址
        
    svg.data = JSON.parse(JSON.stringify(DevSvg)); // 简单好用的深拷贝

    parse字符串的方式虽然简单好用,但是也有缺陷,比如数据中有function类型的数据,就没有办法拷贝过去,只能自行拷贝,好在我这里只使用到了一个function参数,对这种简单好用的拷贝方式还是很满意的

    针对function类型数据的处理,见下图:

     

     还有一种方式就是利用方法返回对象,这样每次获取的都是新的对象,代码如下:

    var DevSvg = function() {
            return {
                SvgData: SvgCommonData.SvgData,
                TitleData: SvgCommonData.TitleData(),
                online: {
                    path: SvgCommonData.PathData("在线:", 0.5, SvgCommonData.onlineColor),
                    info: SvgCommonData.InfoData(25, SvgCommonData.onlineColor)
                },
                offline: {
                    path: SvgCommonData.PathData("离线:", 0.5, SvgCommonData.offlineColor),
                    info: SvgCommonData.InfoData(-25, SvgCommonData.offlineColor)
                },
                goPage: function() {
                    alert("DevSvg");
                }
            };
    };
    var obj = DevSvg(); 
    var obj2 = DevSvg(); // obj 和 obj2 就是两个不同的对象
  • 相关阅读:
    LaTex 2
    Haskell语言练习
    TypeScript语言学习笔记(2)接口,类
    正则表达式(TypeScript, JavaScript)
    Angular2学习笔记
    Haskell语言学习笔记(71)Semigroup
    正则表达式(Kotlin)
    TypeScript语言学习笔记(1)基本类型,变量声明
    Kotlin语言编程技巧集
    多线程(Java)
  • 原文地址:https://www.cnblogs.com/LcxSummer/p/12509293.html
Copyright © 2011-2022 走看看