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

    浅拷贝

    拷贝的是对象的索引地址,一个对象的数据发生变化时,另一个对象的数据也会发生改变

    浅拷贝的方法:
      1.对象时多层的情况下
     a: Object.assign({},obj)//返回合并后的对象

     b: $.extend({},obj)//返回合并后的对象

     c: function copy(obj){
        var newObj = {};
        for(var key in obj){
          newObj[key] = obj[key];
        }
        return newObj;
      }
    -------------------------------
    d:
    let a = {
      age: 1
    }
    let b = a//不常用
    a.age = 2
    console.log(b.age) // 2

    深拷贝

    拷贝的是对象的值,一个对象的数据发生变化时,另一个对象的数据不会发生改变

    深拷贝的方法:
     1.对象时单层的情况下:
      Object.assign({},obj)

      扩展运算符...//注意:当对象是单层时,是深拷贝,当对象是多层时,第一层是深拷贝,第二层就是浅拷贝
      var newObj = {...obj}


     2.对象是单层或者多层的情况下
      $.extend(true,{},obj)
      JSON.parse(JSON.stringify(obj))//将对象先转为字符串,在转为对象

    注意:

    let a = {
        age: 1
    }
    let b = {...a}
    a.age = 2
    console.log(b.age) // 1
    
    ---------------------------------------------
    let a = {
    
        age: undefined,
    
        jobs: function() {},
    
        name: 'yck'
    
    }
    
    let b = JSON.parse(JSON.stringify(a))
    
    console.log(b) // {  name: 'yck'}
  • 相关阅读:
    数据科学家成长指南(下)
    数据科学家成长指南(中)
    数据科学家成长指南(上)
    数据分析的职业规划
    2018的内容写作方向
    乱码 设置编码
    CI 如何获取get请求过来的数据
    ci 打印出常用的变量
    CI $_GET
    获取checkbox 组成字符串
  • 原文地址:https://www.cnblogs.com/SRH151219/p/10421841.html
Copyright © 2011-2022 走看看