擴充套件運算子,Object.assign
阿新 • • 發佈:2019-05-05
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);
}