推薦——操作新穎,逆向思維
(①轉成json字串;②在將字串轉為物件)
obj1 = };
let obj3 = json.parse(json.stringify(obj1));
obj1.a = 4;
obj1.b.c = 4;
log(json.stringify(obj3));
// }
慎用lodash的clonedeep函式(文中還是推薦方法一)
import from 'lodash';
//拷貝物件,防止引用
this.allocateinfo = clonedeep(allocate);
(漏洞:物件嵌物件,可能還是存在引用);
引申:object.assign()
js物件深度拷貝
js中物件是引用資料型別,如果我們只是簡單的把物件a通過等號複製給物件b,那麼物件a b指向的還是同乙個位址,這是改變a,b也會跟著改變。var a var b a b.a 2 console.log a.a 2這並不是我們想要看到的,一般我們想要的拷貝乙個物件就是想要相互不影響兩個物件。也就是深度...
js深度物件合併,深度賦值 拷貝
平時我們在處理純粹物件 鍵值對物件 json 時,如果使用object.assign或者物件解構賦值,只會合併第一層的資料,而當合併巢狀物件,將會直接覆蓋掉前面被合併物件裡的資料,這是因為object.assign和物件解構賦值都是只有第一層屬於深拷貝,而往下都是淺拷貝,例如 var obj1 va...
js實現深度拷貝
js實現拷貝,使用普通賦值物件,在操作其中乙個物件值的時候,另乙個也會更改,不符合需求 因此引入深度拷貝,以下為實現深度拷貝的幾種法 合併多個物件 var target var source1 var source2 object.assign target,source1,source2 注意 這...