1. 程式人生 > >擴充套件運算子,Object.assign

擴充套件運算子,Object.assign

assign或者...擴充套件符 都是淺拷貝 

物件中的擴充套件運算子(...)用於取出引數物件中的所有可遍歷屬性,拷貝到當前物件之中

Object.assign方法用於物件的合併,將源物件(source)的所有可列舉屬性,複製到目標物件(target)

如果在拷貝 屬性值是物件時,拷貝的是物件的引用地址

可以簡單深拷貝:   藉助JSON.parse  。因為字串轉成物件之後就是一個新的物件

var a={title:'a',name:{a:'1',b:'2'}};

var b = JSON.parse(JSON.stringify(a))
b.name.a='3';
console.log(a,b)

=========================

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 一章),都可以用擴充套件運算子轉為真正的陣列

foo (a,b,c){

 const args = [...arguments];   =>等價於  Array.prototype.slice.call(arguments);

}