Symbol Type
ES6引進了一個新的原始資料型別Symbol,表示獨一無二的值。它是JavaScript語言的第七種資料類型,前六種是:Undefined、Null、布林值(Boolean)、字串(String)、數值(Number)、物件(Object)。
Symbol值透過Symbol函數產生。這就是說,物件的屬性名稱現在可以有兩種類型,一種是原來就有的字串,另一種就是新增的Symbol類型。凡是屬性名屬於Symbol類型,就都是獨一無二的,可以保證不會與其他屬性名產生衝突。
Iterators(迭代器)
ES6迭代器不是內建的,透過使用[Symbol .iterator]()和.next()來進行建立。 Iterators(迭代器)是一種接口,為各種不同的資料結構提供統一的存取機制。任何資料結構只要部署Iterator接口,就可以完成遍歷操作(即依序處理該資料結構的所有成員)。
Iterator的作用:
為各種資料結構,提供一個統一的、簡單的存取介面;
使得資料結構的成員能夠按某種次序排列;
ES6創造了一種新的遍歷命令for...of循環,Iterator介面主要供for...of消費。
#Set、Map資料結構
ES6提供了新的資料結構Set。它類似於數組,但是成員的值都是唯一的,沒有重複的值。
Set本身就是一個建構函數,用來產生Set資料結構。
ES6提供了Map資料結構。它類似對象,也是鍵值對的集合,但是「鍵」的範圍不限於字串,各種類型的值(包括對象)都可以當作鍵。也就是說,Object結構提供了「字串—值」的對應,Map結構提供了「值—值」的對應,是一種更完善的Hash結構實作。如果你需要「鍵值對」的資料結構,Map比Object更適合。
WeakSet結構與Set類似,也是不重複的值的集合。但WeakSet只能存物件類型的元素,例如:Object, Array, Function 等。 WeakSet中的對像都是弱引用,即垃圾回收機制不考慮WeakSet對該對象的引用,如果其他對像都不再引用該對象,那麼垃圾回收機制會自動回收該對象所佔用的內存,不考慮該對象還存在於WeakSet之中。有了弱引用的WeakSet, 就不用擔心記憶體洩漏了。
WeakSet物件的方法只有三個,WeakMap沒有size屬性:
add(): 新增元素到集合。
delete(): 從集中移除指定元素。
has(): 如果集包含指定的元素,則傳回 true。
WeakMap結構與Map結構基本上類似,也是鍵值對的集合。但WeakMap只接受物件作為鍵名(null除外),不接受其他類型的值作為鍵名,而且鍵入所指向的對象,不計入垃圾回收機制。
WeakMap物件的方法,WeakMap沒有size屬性,WeakMap物件不能枚舉:
clear ():從WeakMap 移除所有元素。
delete(): 從 WeakMap 移除指定的元素。
get(): 從 WeakMap 傳回指定的元素。
has(): 如果 WeakMap 包含指定元素,則傳回 true。
set(): 新增元素至 WeakMap。
toString():傳回 WeakMap 的字串表示形式。
valueOf():傳回指定物件的原始值。
Typed Arrays(類型化陣列)
類型化陣列(ArrayBuffer物件、TypedArray視圖和DataView檢視)是JavaScript操作二進位資料的一個介面。這些物件早就存在,屬於獨立的規格(2011年2月發布),ES6將它們納入了ECMAScript規格,並且增加了新的方法。
類型化陣列支援任意基於位元組的資料結構,更方便的實作網路協定、加密演算法、檔案格式操作等功能。
ArrayBuffer是一段不透明的記憶體區域(所謂不透明,就是無法直接操作的資料區塊),單位是位元組(Byte)也就是8位,它的byteLength屬性傳回其記憶體大小。
在ArrayBuffer上,可以使用不同的視圖來建立任意數量的類型化數組, 這些類型化數組也可以是重疊的。有八種不同的類型化陣列(視圖),分別為:
#Int8Array: 1個位元組,8位元二進位帶符號整數-2^7~(2^7) - 1
#Uint8Array: 1個位元組,8位元無符號整數0~(2^8) - 1
Int16Array: 2個位元組,16位元二進位帶符號整數-2^15~(2^15)-1
Uint16Array : 2個位元組,16位元無符號整數0~(2^16) - 1
Int32Array: 4個位元組,32位元二進位帶符號整數-2^31~ (2^31)-1
Uint32Array: 4個位元組,32位元無符號整數0~(2^32) - 1
#Float32Array: 4個字節,32位元IEEE浮點數
#Float64Array: 8個位元組,64位元IEEE浮點數
#如果一段資料包含多種類型,這時除了建立ArrayBuffer物件的複合視圖以外,還可以透過DataView檢視進行操作。
DataView視圖提供更多操作選項,而且支援設定位元組序。
DataView本身也是建構函數,接受一個ArrayBuffer物件作為參數,產生視圖。
以上是ES6新特性開發微信小程式(4)的詳細內容。更多資訊請關注PHP中文網其他相關文章!