摘要:概述也是一個(gè)新的數(shù)據(jù)結(jié)構(gòu),在中其實(shí)也經(jīng)常用到,比如下面的栗子,我們經(jīng)常這么使用一個(gè)對象,與其說他是對象,其實(shí)他更像一個(gè),但是比起真正的,這個(gè)還是有點(diǎn)弱了,初始化初始化一個(gè)有一個(gè)可選的參數(shù),該參數(shù)必須是一個(gè)可迭代對象,可迭代對象包括和用戶定
0x000 概述
Map也是一個(gè)新的數(shù)據(jù)結(jié)構(gòu),在js中其實(shí)也經(jīng)常用到,比如下面的栗子,我們經(jīng)常這么使用一個(gè)對象,與其說他是對象,其實(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è)可迭代對象,可迭代對象包括String、Array、Array-Like obejct(Arguments、NodeList)、Typped Array、Set、Map和用戶定義的可迭代對象。
數(shù)組
new Map([[1,2],[3,4]]) // Map(2)?{1 => 2, 3 => 4}0x002 添加
和對象作為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)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/99250.html
摘要:概述反射說起來和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。 0x000 概述 反射說起來和上一章節(jié)的代理基本一樣,只是使用的方式不同,設(shè)計(jì)理念也不同。 反射提供了一系列的靜態(tài)函數(shù),可以使用Reflect.function_name(...prams)調(diào)用,這一系列的方法和代理的處理器對象方法一致 0x001 apply 語法 Reflect.apply(targ...
摘要:概述代理嘛,就是請代理人代替自己做某件事,但是和自己不一樣的是代理人可以有自己的行為,甚至可以做出和預(yù)期相違背的行為。 0x000 概述 代理嘛,就是請代理人代替自己做某件事,但是和自己不一樣的是代理人可以有自己的行為,甚至可以做出和預(yù)期相違背的行為。 0x001 栗子 聲明一個(gè)普通對象origin,他有一個(gè)屬性name let origin={ name: origin } ...
摘要:可以看到,父級更新了,子組件也同步更新了,也就完成了父組件向子組件發(fā)起通信的目的。當(dāng)然我們也可以通過適當(dāng)?shù)慕M件設(shè)計(jì)來避免過深的組件嵌套通信。所以這就解決了遠(yuǎn)程組件通信深度組件嵌套的問題。組件間通信可以選擇像這樣的庫來處理。 0x000 概述 這一章講組件間通信,組件通信分為很多種: 父組件向子組件發(fā)起通信 子組件向父組件發(fā)起通信 兄弟組件間通訊 遠(yuǎn)程組件通信 在組件通信中,有一種錯(cuò)...
摘要:聲明的變量不得改變值,這意味著,一旦聲明變量,就必須立即初始化,不能留到以后賦值。解構(gòu)賦值允許按照一定模式,從數(shù)組和對象中提取值,對變量進(jìn)行賦值,這被稱為解構(gòu)。對象的解構(gòu)賦值對象的屬性沒有次序,變量必須與屬性同名。 ES6 新增特性整理講解 新增命令 1.let命令 ES6新增了let命令,用來聲明變量。它的用法類似于var,但是也存在新的特性。 - **let所聲明的變量,只在le...
閱讀 787·2021-11-24 10:30
閱讀 1331·2021-09-24 09:48
閱讀 3129·2021-09-24 09:47
閱讀 3674·2019-08-29 17:11
閱讀 2959·2019-08-29 15:38
閱讀 2360·2019-08-29 11:03
閱讀 3668·2019-08-26 12:15
閱讀 1075·2019-08-26 10:45