摘要:概述也是一個(gè)新的數(shù)據(jù)結(jié)構(gòu),在中其實(shí)也經(jīng)常用到,比如下面的栗子,我們經(jīng)常這么使用一個(gè)對(duì)象,與其說(shuō)他是對(duì)象,其實(shí)他更像一個(gè),但是比起真正的,這個(gè)還是有點(diǎn)弱了,初始化初始化一個(gè)有一個(gè)可選的參數(shù),該參數(shù)必須是一個(gè)可迭代對(duì)象,可迭代對(duì)象包括和用戶定
0x000 概述
Map也是一個(gè)新的數(shù)據(jù)結(jié)構(gòu),在js中其實(shí)也經(jīng)常用到,比如下面的栗子,我們經(jīng)常這么使用一個(gè)對(duì)象,與其說(shuō)他是對(duì)象,其實(shí)他更像一個(gè)Map,但是比起真正的Map,這個(gè)還是有點(diǎn)弱了,
let color={ "red":"#FF0000", "green":"#00FF00", "blue":"#0000FFF" } color["red"]0x001 初始化
new Map([iterable])
初始化一個(gè)Map有一個(gè)可選的參數(shù),該參數(shù)必須是一個(gè)可迭代對(duì)象,可迭代對(duì)象包括String、Array、Array-Like obejct(Arguments、NodeList)、Typped Array、Set、Map和用戶定義的可迭代對(duì)象。
數(shù)組
new Map([[1,2],[3,4]]) // Map(2)?{1 => 2, 3 => 4}0x002 添加
和對(duì)象作為Map相比,Map的鍵可以是任意值,甚至可以是NaN
var myMap = new Map(); var keyObj = {}, keyFunc = function () {}, keyString = "a string"; // 添加鍵 myMap.set(keyString, "和鍵"a string"關(guān)聯(lián)的值"); myMap.set(keyObj, "和鍵keyObj關(guān)聯(lián)的值"); myMap.set(keyFunc, "和鍵keyFunc關(guān)聯(lián)的值");0x003 獲取Map的大小
myMap.size // 30x004 獲取
myMap.get(keyString) // "和鍵"a string"關(guān)聯(lián)的值" myMap.get(keyObj) // "和鍵keyObj關(guān)聯(lián)的值" myMap.get(keyFunc) // "和鍵keyFunc關(guān)聯(lián)的值"0x005 是否包含
myMap.has(keyString) // true myMap.has("1") // false0x006 刪除
myMap.delete(keyString) // true myMap.delete("") // false0x007 遍歷
myMap.forEach(m=>{console.log(m)}) // 和鍵"a string"關(guān)聯(lián)的值 // 和鍵keyObj關(guān)聯(lián)的值 // 和鍵keyFunc關(guān)聯(lián)的值0x008 獲取迭代器
let entries=myMap.entries() entries.next().value // 和鍵"a string"關(guān)聯(lián)的值 entries.next().value// 和鍵keyObj關(guān)聯(lián)的值 entries.next().value// 和鍵keyFunc關(guān)聯(lián)的值0x009 獲取 key 迭代器
let keys=myMap.keys() keys.next().value // "a string" keys.next().value// function () {} keys.next().value// {}0x010 獲取 value 迭代器
let values=myMap.values() values.next().value // 和鍵"a string"關(guān)聯(lián)的值 values.next().value// 和鍵keyObj關(guān)聯(lián)的值 values.next().value// 和鍵keyFunc關(guān)聯(lián)的值0x011 清除
mySet.clear()
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/99250.html
摘要:概述反射說(shuō)起來(lái)和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。 0x000 概述 反射說(shuō)起來(lái)和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。 反射提供了一系列的靜態(tài)函數(shù),可以使用Reflect.function_name(...prams)調(diào)用,這一系列的方法和代理的處理器對(duì)象方法一致 0x001 apply 語(yǔ)法 Reflect.apply(targ...
摘要:概述代理嘛,就是請(qǐng)代理人代替自己做某件事,但是和自己不一樣的是代理人可以有自己的行為,甚至可以做出和預(yù)期相違背的行為。 0x000 概述 代理嘛,就是請(qǐng)代理人代替自己做某件事,但是和自己不一樣的是代理人可以有自己的行為,甚至可以做出和預(yù)期相違背的行為。 0x001 栗子 聲明一個(gè)普通對(duì)象origin,他有一個(gè)屬性name let origin={ name: origin } ...
摘要:可以看到,父級(jí)更新了,子組件也同步更新了,也就完成了父組件向子組件發(fā)起通信的目的。當(dāng)然我們也可以通過(guò)適當(dāng)?shù)慕M件設(shè)計(jì)來(lái)避免過(guò)深的組件嵌套通信。所以這就解決了遠(yuǎn)程組件通信深度組件嵌套的問(wèn)題。組件間通信可以選擇像這樣的庫(kù)來(lái)處理。 0x000 概述 這一章講組件間通信,組件通信分為很多種: 父組件向子組件發(fā)起通信 子組件向父組件發(fā)起通信 兄弟組件間通訊 遠(yuǎn)程組件通信 在組件通信中,有一種錯(cuò)...
摘要:聲明的變量不得改變值,這意味著,一旦聲明變量,就必須立即初始化,不能留到以后賦值。解構(gòu)賦值允許按照一定模式,從數(shù)組和對(duì)象中提取值,對(duì)變量進(jìn)行賦值,這被稱為解構(gòu)。對(duì)象的解構(gòu)賦值對(duì)象的屬性沒(méi)有次序,變量必須與屬性同名。 ES6 新增特性整理講解 新增命令 1.let命令 ES6新增了let命令,用來(lái)聲明變量。它的用法類似于var,但是也存在新的特性。 - **let所聲明的變量,只在le...
閱讀 732·2021-11-24 10:30
閱讀 1267·2021-09-24 09:48
閱讀 3083·2021-09-24 09:47
閱讀 3602·2019-08-29 17:11
閱讀 2885·2019-08-29 15:38
閱讀 2280·2019-08-29 11:03
閱讀 3607·2019-08-26 12:15
閱讀 1018·2019-08-26 10:45