1.扩展运算符...
浅拷贝,拷贝可枚举属性
使用这种技术将会忽略原型链。此外,嵌套对象并不会被克隆,只是复制了他们的引用,因此浅拷贝后嵌套对象和原始对象仍然指向同一个对象。
let a = {b:1}
b = {...a}
console.log(b) // {b: 1}
2.JSON.parse(JSON.stringify(obj))
可用于深度克隆一个简单的对象,但他是 CPU 密集型的且只允许接受有效的 JSON。因此不适用于含有函数及循环引用的场景。
let a = {b:1}
b = JSON.parse(JSON.stringfy(a))
console.log(b) // {b: 1}
3.reduce
Object.keys(obj).reduce((acc, key) => (acc[key] = obj[key], acc), {})