zoukankan      html  css  js  c++  java
  • deepClone

    把一个变量的值赋值给另一个变量,如果是引用类型,那么有两种方式    浅拷贝与深拷贝
      
     浅拷贝  引用给newObj  即拷贝指针  即引用传递  本身会改变
     
    深拷贝,创建一个新对象,内容给原来需要拷贝的对象的内容是一样的。 类似值传递(值传递是指基本数据类型)  本身不会改变
    深拷贝的三种方式
    第一种,利用map返回新数组的机制 return userlist.map(item=>item);
    第二种,利用Array.from返回新数组的机制 return Array.from(userlist);
    第三种,利用 ...解开数组.自己在套上一个新的数组 return [...userlist];
     
     
    deepClone: obj => {
    var _obj
    if (typeof obj === 'object' && obj !== null) {
    if (Object.prototype.toString.call(obj) === '[object Object]') {
    _obj = {}
    for (var key in obj) {
    _obj[key] = utils.deepClone(obj[key])
    }
    return _obj
    } else if (Object.prototype.toString.call(obj) === '[object Array]') {
    _obj = []
    for (var _key in obj) {
    _obj[_key] = utils.deepClone(obj[_key])
    }
    return _obj
    }
    } else {
    return obj
    }
    },
     
    数据
    JSON.parse(JSON.stringify())
    数组
    filter
    find
    Array.prototype.forEach
    对象
    Object.assign({}, this.$route.query, { tabName: data.name })

    .除了上面两种方法之外,我们还可以借用JQ的extend方法。

    $.extend( [deep ], target, object1 [, objectN ] )

     
     
  • 相关阅读:
    Wiki开源软件 介绍
    实时股票获取API
    .net 下动态加载自定义控件后传值及函数调用方法
    vim(gvim)相关插件整理
    CPPUnit 测试宏
    .bash_profile和.bashrc
    Linux下SSH配合SecureCRT的密匙完美使用方法(图)
    Windows下编译gdal使其支持proj
    收藏:解析#pragma指令
    Windows 2003中打开DirectX加速
  • 原文地址:https://www.cnblogs.com/gudun/p/9522141.html
Copyright © 2011-2022 走看看