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 ] )

     
     
  • 相关阅读:
    设计模式之外观模式(结构型)
    Oracle merge合并更新函数
    前端自定义搜索框实现
    Easyui学习整理笔记
    Jquery+Eayui实现列表选择功能
    Oracle SQL优化器简介
    设计模式之原型模式(创建型)
    Mysql学习笔记整理手册
    Oracle和Mysql语法异同整理笔记
    Mysql实现树形递归查询
  • 原文地址:https://www.cnblogs.com/gudun/p/9522141.html
Copyright © 2011-2022 走看看