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), {})