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 就是两个不同的对象
  • 相关阅读:
    MySQL用户
    python -- 中
    Python -- 上
    Zabbix导入数据库时报错
    chmod无执行权限
    编译安装Tengine
    Nginx的调度算法
    nginx--第三方模块echo
    ngx_http_headers_module
    nginx---隐藏或添加后端服务器的信息
  • 原文地址:https://www.cnblogs.com/LcxSummer/p/12509293.html
Copyright © 2011-2022 走看看