String類型和 Symbol 類型的屬性都會被拷貝。
合併對象
合併具有相同屬性的對象
六、Map和Set
Map和Set都叫做集合,但是他們也有所不同。Set常被用來檢查對象中是否存在某個鍵名,Map集合常被用來獲取已存的信息。
Set是有序列表,含有相互獨立的非重複值。
Array和Set對比
都是一個存儲多值的容器,兩者可以互相轉換,但是在使用場景上有區別。如下:
Array的indexOf方法比Set的has方法效率低下
Set不含有重複值(可以利用這個特性實現對一個數組的去重)
Set通過delete方法刪除某個值,而Array只能通過splice。兩者的使用方便程度前者更優
Array的很多新方法map、filter、some、every等是Set沒有的(但是通過兩者可以互相轉換來使用)
Object和Map對比
Object是字符串-值,Map是值-值
Object鍵為string類型,Map的鍵是任意類型
手動計算Object尺寸,Map.size可以獲取尺寸
Map的排序是插入順序
Object有原型,所以映射中有一些缺省的鍵。可以理解為Map=Object.create(null)
Set操作集合
Map的方法集合
七、迭代器(Iterator)
1、entries() 返回迭代器:返回鍵值對
2、values() 返回迭代器:返回鍵值對的value
3、keys() 返回迭代器:返回鍵值對的key
雖然上面列舉了3種內建的迭代器方法,但是不同集合的類型還有自己默認的迭代器,在for of中,數組和Set的默認迭代器是values(),Map的默認迭代器是entries()。
for of循環解構
對象本身不支持迭代,但是我們可以自己添加一個生成器,返回一個key,value的迭代器,然後使用for of循環解構key和value。
字符串迭代器
ES6給數組添加了幾個新方法:find()、findIndex()、fill()、copyWithin()
4、copyWithin():選擇數組的某個下標,從該位置開始複製數組元素,默認從0開始複製。也可以指定要複製的元素範圍。
ES6中類class、Promise與異步編程、代理(Proxy)和反射(Reflection)API,這幾塊內容比較複雜,以後有機會再詳細寫。
才入門的新手需要工具包和學習資料,私信666!
閱讀更多 WEB前端交流 的文章
關鍵字: 聲明 技術 JavaScript