天天看點

JavaScript全解析——Map和Set資料結構和ES6子產品化文法

Map和Set資料結構

●ES6 新增的兩種資料結構

●共同的特點: 不接受重複資料

Set資料結構

●是一個 類似于 數組的資料結構

●按照索引排列的資料結構

建立 Set 資料結構

文法: var s = new Set([ 資料1, 資料2, 資料3, ... ])

Set 資料結構的屬性和方法

●size 屬性

○文法: 資料結構.size

○得到: 該資料結構内有多少個資料

●add() 方法

○文法: 資料結構.add(資料)

○作用: 向該資料結構内添加資料

●has() 方法

○文法: 資料結構.has(資料)

○傳回值: 一個布爾值

■true, 表示該資料結構内有該資料

■false, 表示該資料結構内沒有該資料

●delete() 方法

○文法: 資料結構.delete(資料)

○作用: 删除該資料結構内的某一個資料

●clear() 方法

○文法: 資料結構.clear()

○作用: 清除該資料結構内所有資料

●forEach() 方法

○文法: 資料結構.forEach(function (value, key, origin) {})

// 建立 Set 資料結構
var s = new Set([ 100, 200, 300 ])
console.log(s)
// Set 的屬性和方法
// 1. size
console.log(s.size)
// 2. add()
var o = { name: 'Jack' }
s.add({ name: 'Jack' })
s.add(o)
console.log(s)
// 3. has()
console.log(s.has(200))
console.log(s.has(o))
// 4. delete()
s.delete(300)
s.delete(o)
console.log(s)
// 5. clear()
s.clear()
console.log(s)
// 6. forEach()
s.forEach(function (item, value, origin) {
  console.log('我執行了', item, value, origin)
})
           

Map資料結構

●是一個類似于對象的資料結構, 但是他的 key 可以是任何資料類型

●可以被叫做一個 值=值 的資料結構

建立一個 Map 資料結構

文法: var m = new Map([ [ key, value ], [ key, value ] ])

Map 資料結構的屬性和方法

●size 屬性

○文法: 資料結構.size

○得到: 該資料結構内有多少個資料

●set() 方法

○文法: 資料結構.set(key, value)

○作用: 向該資料結構内添加資料

●get() 方法

○文法: 資料結構.get(key)

○傳回值: 資料結構内該 key 對應的 value

●has() 方法

○文法: 資料結構.has(key)

○傳回值: 一個布爾值

■true, 該資料結構内有該資料

■false, 該資料結構内沒有該資料

●delete() 方法

○文法: 資料結構.delete(key)

○作用: 删除該資料結構内的某一個資料

●clear() 方法

○文法: 資料結構.clear()

○作用: 清除該資料結構内所有資料

●forEach() 方法

○文法: 資料結構.forEach(function (value, key, origin) {})

// 建立 Map 資料結構
var m = new Map([ ['a', 100], [ { name: 'Jack' }, { name: 'Rose' } ] ])
console.log(m)
// 屬性和方法
// 1. size
console.log(m.size)
// 2. set 方法
m.set('b', 200)
var a = [ 100 ]
m.set(a, [ 200 ])
console.log(m)
// 3. get 方法
console.log(m.get('b'))
console.log(m.get(a))
// 4. has 方法
console.log(m.has('b'))
console.log(m.has({ name: 'Jack' }))
// 5. delete 方法
m.delete(a)
console.log(m)
// 6. clear()
m.clear()
console.log(m)
// 7. forEach()
m.forEach(function (value, key, origin) {
  console.log(value, key, origin)
})           

ES6子產品化文法

開發的曆史演變

●最早: 一個 js 檔案

○每一個 html 檔案對應一個 js 檔案

●後來: 把一個項目内部的重複功能提取出來

○寫成一個單獨的 js 檔案

●再後來:

○決定按照功能拆分出一個一個的檔案

○a.js : 專門做頂部導航欄各種功能

○b.js : 專門做二級菜單

○c.js : 專門做搜尋引擎

○d.js : 左側邊欄

○e.js : 輪播圖

●最後在每一個 頁面 準備有一個整合的 js 檔案

●在頁面中引入js檔案的時候一定要在script表橋中添加一個type = module屬性

○就是專門用來組合這個頁面使用了多少個 js 檔案子產品

○此時, 我們管每一個 js 檔案叫做一個 子產品

○頁面的完整功能, 就是由一個一個的子產品來完成的

○這就叫做 子產品化 開發

●學到這裡大家應該知道,一個子產品就是實作特定功能的檔案,有了子產品,我們就可以更友善地使用别人的代碼,想要什麼功能,就加載什麼子產品

子產品化開發的規則

●如果你想使用 ES6 的子產品化開發文法

○頁面必須在伺服器上打開。本地打開不行

○vscode 下載下傳插件, live server

○打開頁面的時候, 滑鼠右鍵 open with live server*

●當你使用了 子產品化文法以後

○每一個 js 檔案, 都是一個獨立的 檔案作用域

○該檔案内的所有變量和方法, 都隻能在這個檔案内使用

○其他檔案不能使用

○如果像使用, 需要導出

●每一個 js 檔案, 也不能使用任何其他 js 檔案内部的變量

○如果像使用,那麼你需要導入該檔案

文法: 導出和導入

●導出文法:

○export default { 你要導出的内容 }

●導入文法:

○import 變量 from 'js檔案路徑

繼續閱讀