assign或者...擴展符 都是淺拷貝 javascript
對象中的擴展運算符(...)用於取出參數對象中的全部可遍歷屬性,拷貝到當前對象之中
java
Object.assign
方法用於對象的合併,將源對象(source)
的全部可枚舉屬性,複製到目標對象(target)
數組
若是在拷貝 屬性值是對象時,拷貝的是對象的引用地址spa
能夠簡單深拷貝: 藉助JSON.parse 。由於字符串轉成對象以後就是一個新的對象prototype
var a={title:'a',name:{a:'1',b:'2'}}; var b = JSON.parse(JSON.stringify(a)) b.name.a='3'; console.log(a,b)
=========================code
let bar = {a:1,b:2};
let foo = {c:3, ...bar} ==> 等價於 let foo = Object.assign({},bar);對象
let bar = [1,2,3]
let foo = [4,...bar]接口
任何 Iterator 接口的對象(參閱 Iterator 一章),均可以用擴展運算符轉爲真正的數組ip
foo (a,b,c){字符串
const args = [...arguments]; =>等價於 Array.prototype.slice.call(arguments);
}