注冊(cè)登錄

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

2017-06-14
導(dǎo)讀:2017年6月14日,ES6開(kāi)發(fā)小程序已經(jīng)是當(dāng)下最熱門(mén)的話題,下面將從多方面來(lái)談?wù)凟S6開(kāi)發(fā)小程序相關(guān)的內(nèi)容。...

2017年6月14日,ES6開(kāi)發(fā)小程序已經(jīng)是當(dāng)下最熱門(mén)的話題,下面將從多方面來(lái)談?wù)凟S6開(kāi)發(fā)小程序相關(guān)的內(nèi)容。

6月14日消息,據(jù)彭博社報(bào)道,為了與新東家沃爾瑪(Walmart)融合得更加順暢,Jet.com(去年8月被沃爾瑪以33億美元收購(gòu))正計(jì)劃逐步剔除自己平臺(tái)上所售的Costco旗下品牌產(chǎn)品。

6月18日,永輝將在福州開(kāi)出第一家永輝生活店。值得注意的是,這也是永輝首家24小時(shí)營(yíng)業(yè)門(mén)店。據(jù)了解,這家24小時(shí)門(mén)店商品由永輝物流統(tǒng)一配送,沒(méi)有熟食但提供蔬菜水果以及冷凍冰鮮類(lèi)商品。

Symbol Type

ES6引入了一種新的原始數(shù)據(jù)類(lèi)型Symbol,表示獨(dú)一無(wú)二的值。它是JavaScript語(yǔ)言的第七種數(shù)據(jù)類(lèi)型,前六種是:Undefined、Null、布爾值(Boolean)、字符串(String)、數(shù)值(Number)、對(duì)象(Object)。

Symbol值通過(guò)Symbol函數(shù)生成。這就是說(shuō),對(duì)象的屬性名現(xiàn)在可以有兩種類(lèi)型,一種是原來(lái)就有的字符串,另一種就是新增的Symbol類(lèi)型。凡是屬性名屬于Symbol類(lèi)型,就都是獨(dú)一無(wú)二的,可以保證不會(huì)與其他屬性名產(chǎn)生沖突。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

Iterators(迭代器)

ES6迭代器不是內(nèi)建的,通過(guò)使用[Symbol.iterator]()和.next()來(lái)進(jìn)行創(chuàng)建。Iterators(迭代器)是一種接口,為各種不同的數(shù)據(jù)結(jié)構(gòu)提供統(tǒng)一的訪問(wèn)機(jī)制。任何數(shù)據(jù)結(jié)構(gòu)只要部署Iterator接口,就可以完成遍歷操作(即依次處理該數(shù)據(jù)結(jié)構(gòu)的所有成員)。

Iterator的作用:

為各種數(shù)據(jù)結(jié)構(gòu),提供一個(gè)統(tǒng)一的、簡(jiǎn)便的訪問(wèn)接口;

使得數(shù)據(jù)結(jié)構(gòu)的成員能夠按某種次序排列;

ES6創(chuàng)造了一種新的遍歷命令for...of循環(huán),Iterator接口主要供for...of消費(fèi)。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

Set、Map數(shù)據(jù)結(jié)構(gòu)

ES6提供了新的數(shù)據(jù)結(jié)構(gòu)Set。它類(lèi)似于數(shù)組,但是成員的值都是唯一的,沒(méi)有重復(fù)的值。

Set本身是一個(gè)構(gòu)造函數(shù),用來(lái)生成Set數(shù)據(jù)結(jié)構(gòu)。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

ES6提供了Map數(shù)據(jù)結(jié)構(gòu)。它類(lèi)似于對(duì)象,也是鍵值對(duì)的集合,但是“鍵”的范圍不限于字符串,各種類(lèi)型的值(包括對(duì)象)都可以當(dāng)作鍵。也就是說(shuō),Object結(jié)構(gòu)提供了“字符串—值”的對(duì)應(yīng),Map結(jié)構(gòu)提供了“值—值”的對(duì)應(yīng),是一種更完善的Hash結(jié)構(gòu)實(shí)現(xiàn)。如果你需要“鍵值對(duì)”的數(shù)據(jù)結(jié)構(gòu),Map比Object更合適。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

WeakSet結(jié)構(gòu)與Set類(lèi)似,也是不重復(fù)的值的集合。但WeakSet只能存對(duì)象類(lèi)型的元素,比如:Object, Array, Function 等。WeakSet中的對(duì)象都是弱引用,即垃圾回收機(jī)制不考慮WeakSet對(duì)該對(duì)象的引用,如果其他對(duì)象都不再引用該對(duì)象,那么垃圾回收機(jī)制會(huì)自動(dòng)回收該對(duì)象所占用的內(nèi)存,不考慮該對(duì)象還存在于WeakSet之中。有了弱引用的WeakSet, 就不用擔(dān)心內(nèi)存泄漏了。

WeakSet對(duì)象的方法只有三個(gè),WeakMap沒(méi)有size屬性:

add(): 向集添加新元素。

delete(): 從集中移除指定元素。

has(): 如果集包含指定的元素,則返回 true。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

WeakMap結(jié)構(gòu)與Map結(jié)構(gòu)基本類(lèi)似,也是是鍵值對(duì)的集合。但WeakMap只接受對(duì)象作為鍵名(null除外),不接受其他類(lèi)型的值作為鍵名,而且鍵名所指向的對(duì)象,不計(jì)入垃圾回收機(jī)制。

WeakMap對(duì)象的方法,WeakMap沒(méi)有size屬性,WeakMap對(duì)象不能枚舉:

clear():從 WeakMap 中移除所有元素。

delete(): 從 WeakMap 中移除指定的元素。

get(): 從 WeakMap 中返回指定的元素。

has(): 如果 WeakMap 包含指定元素,則返回 true。

set(): 添加新元素至 WeakMap。

toString():返回 WeakMap 的字符串表示形式。

valueOf():返回指定對(duì)象的原始值。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

Typed Arrays(類(lèi)型化數(shù)組)

類(lèi)型化數(shù)組(ArrayBuffer對(duì)象、TypedArray視圖和DataView視圖)是JavaScript操作二進(jìn)制數(shù)據(jù)的一個(gè)接口。這些對(duì)象早就存在,屬于獨(dú)立的規(guī)格(2011年2月發(fā)布),ES6將它們納入了ECMAScript規(guī)格,并且增加了新的方法。

類(lèi)型化數(shù)組支持任意基于字節(jié)的數(shù)據(jù)結(jié)構(gòu),更方便的實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議、加密算法、文件格式操作等功能。

ArrayBuffer是一段不透明的內(nèi)存區(qū)域(所謂不透明,就是無(wú)法直接操作的數(shù)據(jù)塊),單位是字節(jié)(Byte)也就是8位,它的byteLength屬性返回其內(nèi)存大小。

在ArrayBuffer上,可以使用不同的視圖來(lái)創(chuàng)建任意數(shù)量的類(lèi)型化數(shù)組, 這些類(lèi)型化數(shù)組也可以是重疊的。有八種不同的類(lèi)型化數(shù)組(視圖),分別為:

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

Int8Array: 1個(gè)字節(jié),8位二進(jìn)制帶符號(hào)整數(shù) -2^7~(2^7) - 1

Uint8Array: 1個(gè)字節(jié),8位無(wú)符號(hào)整數(shù) 0~(2^8) - 1

Int16Array: 2個(gè)字節(jié),16位二進(jìn)制帶符號(hào)整數(shù) -2^15~(2^15)-1

Uint16Array: 2個(gè)字節(jié),16位無(wú)符號(hào)整數(shù) 0~(2^16) - 1

Int32Array: 4個(gè)字節(jié),32位二進(jìn)制帶符號(hào)整數(shù) -2^31~(2^31)-1

Uint32Array: 4個(gè)字節(jié),32位無(wú)符號(hào)整數(shù) 0~(2^32) - 1

Float32Array: 4個(gè)字節(jié),32位IEEE浮點(diǎn)數(shù)

Float64Array: 8個(gè)字節(jié),64位IEEE浮點(diǎn)數(shù)

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol如果一段數(shù)據(jù)包括多種類(lèi)型,這時(shí)除了建立ArrayBuffer對(duì)象的復(fù)合視圖以外,還可以通過(guò)DataView視圖進(jìn)行操作。

DataView視圖提供更多操作選項(xiàng),而且支持設(shè)定字節(jié)序。

DataView本身也是構(gòu)造函數(shù),接受一個(gè)ArrayBuffer對(duì)象作為參數(shù),生成視圖。

ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

 

  • ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

    微信小程序商城系統(tǒng)開(kāi)發(fā)其實(shí)很簡(jiǎn)單

    微信小程序商城系統(tǒng)開(kāi)發(fā)其實(shí)很簡(jiǎn)單,只需要五步就可以完成,整個(gè)過(guò)程包括開(kāi)發(fā)、上線、發(fā)布都可以輕松搞定...詳情

  • ES6開(kāi)發(fā)小程序注意 新的原始數(shù)據(jù)類(lèi)型Symbol

    微信小程序商城系統(tǒng)免費(fèi)注冊(cè)體驗(yàn)

    微信小程序商城系統(tǒng)免費(fèi)注冊(cè)體驗(yàn),接下來(lái)是微信小程序的時(shí)代,這一波紅利在不抓住互聯(lián)網(wǎng)就再也沒(méi)什么機(jī)會(huì)了...詳情

想了解更多微信小程序開(kāi)發(fā)和微信小程序大全都可以進(jìn)入微信小程序商城系統(tǒng)開(kāi)發(fā)了解。

重磅推薦:小程序開(kāi)店目錄

第一部分:小商店是什么

第二部分:如何開(kāi)通一個(gè)小商店

第三部分:如何登錄小商店

第四部分:開(kāi)店任務(wù)常見(jiàn)問(wèn)題

第五部分:小商店可以賣(mài)什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結(jié)算

第十部分:小程序客服

第十一部分:電商創(chuàng)業(yè)

第十二部分:小程序游戲開(kāi)發(fā)

電話咨詢(xún) 微信咨詢(xún) 預(yù)約演示 0元開(kāi)店