浅拷贝
拷贝的是对象的索引地址,一个对象的数据发生变化时,另一个对象的数据也会发生改变 浅拷贝的方法: 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 = 2console.log(b.age) // 1---------------------------------------------let a = { age: undefined, jobs: function() {}, name: 'yck'}let b = JSON.parse(JSON.stringify(a))console.log(b) // { name: 'yck'}