es6(...運算符)

...運算符可用于淺拷貝

  • 深拷貝
let obj1={name:'Jacl'}
let obj2=obj1
obj1["age"]=12
obj2//{name: "Jacl", age: 12}

用Object.assign(obj)實現(xiàn)深拷貝

let obj1={name:'Jacl'}
let obj2=Object.assign( obj1)
obj1["age"]=12
obj2//{name: "Jacl", age: 12}
  • 淺拷貝
let obj1={name:'Jacl'}
let obj2={...obj1}
obj1["age"]=12
obj2//{name: "Jacl"}

當(dāng)然,我們也可以在淺拷貝的同時修改所獲對象的屬性

let obj1={name:'Jacl'}
let obj2={...obj1,name:'Zha'}
obj1["age"]=12
obj2//{name: "Zha"}

用Object.assign({}, obj)實現(xiàn)淺拷貝

let obj1={name:'Jacl'}
let obj2=Object.assign({}, obj1)
obj1["age"]=12
obj2//{name: "Jacl"}

數(shù)組同理

[...arr1]

  • 那么如果想對[{},{},{}...]形式的數(shù)據(jù)對象進行淺拷貝呢?
一層淺拷貝(不符合要求)
二層淺拷貝(符合要求)

...運算符也有其它用處

  • 類型轉(zhuǎn)換
    set轉(zhuǎn)arr(數(shù)組去重)
let s1=new Set([2,1,3,4,3,1])
let arr=[...s1]
arr //[2, 1, 3, 4]
  • 獲取對象屬性/方法
let obj={name:'Li',age:2}
let {name}={...obj}
name//"Li"
  • 擴充對象屬性(增加數(shù)組元素)
let a=[1,2,3]
let b=[4,...a]
b//[4, 1, 2, 3]
let x={name:'Li'};
let y={age:3,...x};
y//{age: 3, name: "Li"}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.屬性的簡潔表示法 允許直接寫入變量和函數(shù) 上面代碼表明,ES6 允許在對象之中,直接寫變量。這時,屬性名為變量...
    雨飛飛雨閱讀 1,281評論 0 3
  • 情景描述 經(jīng)常會看到...props 無狀態(tài)組件的參數(shù)中 或者是在函數(shù)定義的參數(shù)中 坑 請不要把只要出現(xiàn)...的地...
    張培_閱讀 890評論 0 0
  • 屬性的簡潔表示法 ES6允許直接寫入變量和函數(shù),作為對象的屬性和方法。這樣的書寫更加簡潔。 上面代碼表明,ES6允...
    呼呼哥閱讀 3,021評論 0 2
  • 三,字符串?dāng)U展 3.1 Unicode表示法 ES6 做出了改進,只要將碼點放入大括號,就能正確解讀該字符。有了這...
    eastbaby閱讀 1,672評論 0 8
  • 《ECMAScript6 入門》阮一峰 讀書筆記 let和constlet聲明的變量僅在塊級作用域內(nèi)有效,var聲...
    親愛的孟良閱讀 818評論 1 2

友情鏈接更多精彩內(nèi)容