lodash _.deepClone(obj)
Json.parse(Json.string(obj))
只复制一层
- 序列化后会将 function,undefined 丢失
- 有时间对象,则序列化后会将时间对象转换为字符串格式
- NaN、Infinity和-Infinity,则序列化后会变成null
- 由构造函数生成的,则序列化的结果会丢弃对象的 constructor
自己根据需求实现
function deepClone(obj) {let aif (Object.prototype.toString.call(obj) === '[object Object]') {a = {}for(let i in obj){a[i] = deepClone(obj[i])}} else if (Object.prototype.toString.call(obj) === '[object Array]') {a = obj.map(i => deepClone(i))}else{a = obj}return a}
浅拷贝
只复制引用,未复制真正值
Object.assign方法
