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'}

 

posted @ 2019-02-23 10:35  SRH啦  阅读(138)  评论(0编辑  收藏  举报