js 對象的淺拷貝和深拷貝
阿新 • • 發佈:2017-10-18
tex bject script cnblogs ons assign 對象 而已 obj
//淺拷貝,拷貝內存塊,拷貝部門代碼不共存 var obj = { a : "a", b : "b", c : { text : "這是一個文本" } } var copy = obj; copy.a = "copy"; console.log(obj.a)// "copy",可以看到這裏的淺拷貝,會修改到原先的數據,因為淺拷貝是拷貝同一塊內存塊 //es6有Object.assign()方法用於深度拷貝,不過只是一級深度拷貝 var obj = { a : "a", b : "b", c : { text : "這是一個文本" } } var assigncopy = Object.assign({}, obj); assigncopy.a="assigncopy"; assigncopy.c.text = "assigncopytext"; console.log(obj.a) // "a" console.log(obj.c.text) // "assigncopytext", 說明只是一級深度拷貝而已,用時要小心 //深度拷貝對象,一般都能滿足 var obj = { a : "a", b : "b", c : { text : "這是一個文本" } } var stringcopy = JSON.parse(JSON.stringify(obj)); stringcopy.c.text = "stringcopytext"; console.log(obj.c.text);//"這是一個文本"
js 對象的淺拷貝和深拷貝