日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Map與WeakMap類型在JavaScript中的使用詳解

瀏覽:28日期:2023-06-15 10:53:33

map類型特點與創建方法:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <script> // 對象的鍵名會自動轉為字符串 // let obj = { // 1: ’cyy1’, // ’1’: ’cyy2’ // }; // console.log(obj); // 對象的鍵名是對象時,會自動轉為字符串 // 讀取時也要先轉為字符串再讀取 // let obj = { // name: ’cyy’ // }; // let obj2 = { // obj: ’cyy2’, // [obj]: ’cyy3’ // }; // console.log(obj2); // console.log(obj2[obj.toString()]); // map類型,什么都可以作為鍵,鍵名可以是任何類型 // let map = new Map(); // map.set(’name’, ’cyy’); // map.set(function() {}, ’cyy2’); // map.set({}, ’cyy3’); // map.set(1, ’cyy4’); // console.log(map); // 構造函數創建時加入數據 let map = new Map([ [’name’, ’cyy’], [’age’, 18] ]); console.log(map); // 支持鏈式操作 let str = ’cyy’; let str2 = str.toUpperCase().substr(1, 2); console.log(str2); map.set(’11’, 11).set(’22’, 22); console.log(map); </script></body></html>

map類型增刪改查操作:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <script> let obj = { name: ’cyy’ }; let map = new Map(); map.set(obj, ’obj’); console.log(map.has(obj)); console.log(map); console.log(map.get(obj)); console.log(map.delete(’abc’)); console.log(map.delete(obj)); map.clear(); console.log(map); </script></body></html>

遍歷map類型數據:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <script> let map = new Map([ [1, 11], [2, 22] ]); // console.log(map.keys()); // console.log(map.values()); // console.log(map.entries()); // for (let k of map.keys()) { // console.log(k); // } // for (let v of map.values()) { // console.log(v); // } // for (let e of map.entries()) { // console.log(e); // } // for (let [k, v] of map.entries()) { // console.log(`${k}--${v}`); // } map.forEach((item, key) => { console.log(item + ’--’ + key); }) </script></body></html>

map類型轉換操作:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <script> let map = new Map([ [’name’, ’cyy’], [’age’, ’18’] ]); // console.log(...map); // console.log([...map]); // console.log([...map.entries()]); // console.log([...map.keys()]); // console.log([...map.values()]); // let arr = [...map].filter(item => item[1].includes(’cyy’)); let arr = [...map].filter(item => { return item[1].includes(’cyy’); }); // console.log(arr); let new_map = new Map(arr); console.log(new_map); console.log(new_map.values()); // ...是展開語法 console.log(...new_map.values()); </script></body></html>

map類型管理DOM節點:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <div name='cyy1'>cyy1</div> <div name='cyy2'>cyy2</div> <script> let map = new Map(); let divs = document.querySelectorAll(’div’); divs.forEach(item => { // 往map中壓入數據 map.set(item, {content: item.getAttribute(’name’) }); }); // console.log(map); map.forEach((config, elem) => { // console.log(config, elem); elem.addEventListener(’click’, function() {console.log(config.content); }); }) </script></body></html>

使用map類型控制網站表單提交:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <form action='#' onsubmit='return post()'> 接受協議: <input type='checkbox' name='agreement' error='請接受協議'> 我是學生: <input type='checkbox' name='student' error='網站只對學生開放'> <input type='submit' value='提交'> </form> <script> function post() { let map = new Map(); let inputs = document.querySelectorAll(’[error]’); console.log(inputs); inputs.forEach(item => {map.set(item, { error: item.getAttribute(’error’), status: item.checked}); }); // console.log(map); return [...map].every(([elem, config]) => {// 短路操作,前面為真,則不會執行后面// 前面會假,則執行后面config.status || alert(config.error);return config.status;// console.log(config); }); } </script></body></html>

Map與WeakMap類型在JavaScript中的使用詳解

WeakMap的語法使用:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <meta name='viewport' content='width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no'> <style> </style></head><body> <div>cyy</div> <div>cyy2</div> <script> // WeakMap的鍵只能是引用對象 // let map = new WeakMap(); // map.set(’name’); // console.log(map); // map.set([]); // console.log(map); // let map = new WeakMap(); // let divs = document.querySelectorAll(’div’); // divs.forEach(item => map.set(item, item.innerHTML)); // console.log(map); // WeakMap也是弱引用類型 // let arr = []; // let map = new WeakMap(); // map.set(arr, ’cyy’); // map.delete(arr); // console.log(map.has(arr)); // console.log(map); // 弱引用類型,values、keys、entries、迭代循環都用不了 let map = new WeakMap(); // console.log(map.keys()); for (const iterator of map) { console.log(iterator); } </script></body></html>

WeakMap弱引用類型體驗:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <link rel='stylesheet' > <style> </style></head><body> <script> let a = { name: ’cyy’ }; let b = a; let map = new WeakMap(); map.set(a, ’cuu2’); console.log(map); a = null; b = null; console.log(map); setTimeout(function () { console.log(map); }, 1000); </script></body></html>

使用WeakMap開發選課組件:

<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <title>Document</title> <link rel='stylesheet' > <style> * { margin: 0; padding: 0; box-sizing: border-box; } main { width: 100%; display: flex; flex: 1; } section { border: 2px solid #ddd; width: 50%; padding: 10px; } ul { list-style: none; } li { padding: 10px; border: 2px solid orange; margin-bottom: 5px; position: relative; } a { display: inline-block; position: absolute; right: 10px; width: 20px; height: 20px; background: green; color: white; text-decoration: none; line-height: 20px; text-align: center; } #list span { background: green; border-radius: 5px; padding: 5px; color: white; margin: 5px; } #list { margin-top: 20px; } </style></head><body> <main> <section> <ul><li><span>html</span><a href='javascript:;'>+</a></li><li><span>css</span><a href='javascript:;'>+</a></li><li><span>js</span><a href='javascript:;'>+</a></li> </ul> </section> <section> <strong id='count'>共選了2門課</strong> <p id='list'><!-- <span>111</span> --> </p> </section> </main> <script> class Lesson { // 構造函數 constructor() {this.lis = document.querySelectorAll(’li’);this.countElem = document.getElementById(’count’);this.listElem = document.getElementById(’list’);// console.log(this.lis, this.countElem, this.listElem);this.map = new WeakMap(); } run() {this.lis.forEach(li => { li.querySelector(’a’).addEventListener(’click’, event => { let a = event.target; // console.log(li); // console.log(event.target.parentElement); const state = li.getAttribute(’select’); if (state) { // 移除 li.removeAttribute(’select’); this.map.delete(li); a.style.backgroundColor = ’green’; a.innerHTML = ’+’; } else { // 添加 li.setAttribute(’select’, true); this.map.set(li); a.style.backgroundColor = ’red’; a.innerHTML = ’-’; } // console.log(this.map); this.render(); });}) } render() {this.countElem.innerHTML = `共選了${this.count()}門課`;// console.log(this.count());this.listElem.innerHTML = this.list(); } count() {return [...this.lis].reduce((count, li) => { return count += this.map.has(li) ? 1 : 0;}, 0); } list() {let lis = [...this.lis].filter(li => { return this.map.has(li);}).map(li => { return `<span>${li.querySelector(’span’).innerHTML}</span>`;}).join(’’);// console.log(lis);return lis; } } new Lesson().run(); </script></body></html>

Map與WeakMap類型在JavaScript中的使用詳解

到此這篇關于Map與WeakMap類型在JavaScript中的使用的文章就介紹到這了,更多相關Map與WeakMap類型在JavaScript中的使用內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产欧美日韩精品一区二区三区| 久久久国产精品网站| 怡红院精品视频在线观看极品| 欧美一区不卡| sm久久捆绑调教精品一区| se01亚洲视频 | 国产精品成人3p一区二区三区| 一级欧美视频| 国产精品jk白丝蜜臀av小说| 亚州国产精品| 美女精品在线| 在线观看一区| 99久精品视频在线观看视频| 欧美日本一区| 久久三级福利| 国产毛片久久| 99久久激情| 久久亚洲道色| 日韩精品免费视频人成| 久久久国产精品一区二区中文| 欧美日一区二区三区在线观看国产免 | 日韩综合精品| 亚洲91网站| 成人影视亚洲图片在线| 蜜桃免费网站一区二区三区| 裤袜国产欧美精品一区| 毛片不卡一区二区| 亚洲欧美日韩国产一区| 最新国产拍偷乱拍精品| 91精品啪在线观看国产18| 日韩精品亚洲专区在线观看| 欧美日韩激情| 精品中文字幕一区二区三区| 国产伦久视频在线观看| 久久中文字幕av一区二区不卡| 亚洲日本网址| 久久av电影| 日韩亚洲在线| 亚洲精品在线观看91| 日韩一区二区三区免费视频 | 亚洲经典在线| 高清一区二区| 久久伊人国产| 亚洲九九精品| 国产h片在线观看| 美女久久精品| 国产精品久久久亚洲一区| 日本成人一区二区| 美女av一区| 国产精品久久久久久妇女| 成人在线黄色| 国产精品第一国产精品| 97人人精品| 亚洲国产影院| 美女尤物久久精品| 国产精品亚洲欧美| 国产极品嫩模在线观看91精品| 日韩欧美精品一区二区综合视频| 亚洲欧美视频| 电影91久久久| 亚洲一区二区三区久久久| 日韩黄色av| 天堂网在线观看国产精品| 免费在线观看不卡| av一区在线| 美女视频黄 久久| 日本特黄久久久高潮| 国产精品一区二区三区美女| 国产极品嫩模在线观看91精品| 久久亚洲精精品中文字幕| 国产成人久久精品麻豆二区| 美女福利一区二区三区| 日韩精品一区二区三区免费观影 | 天堂资源在线亚洲| 国产高清视频一区二区| 成人精品高清在线视频| 精品网站999| 日韩精品成人| 亚洲综合五月| 日韩一区精品视频| 视频一区视频二区中文字幕| 国产情侣久久| 亚洲精品日韩久久| 久久国产精品毛片| 国产精品婷婷| 日韩黄色大片| 91亚洲国产| 国产精品麻豆久久| 精品99久久| 成人午夜在线| 国产精品99久久精品| 爽爽淫人综合网网站 | 日韩天堂在线| av高清不卡| 日韩在线欧美| 日韩在线观看一区| 日韩精品1区| se01亚洲视频 | 日韩高清中文字幕一区二区| 西西人体一区二区| 欧美亚洲在线日韩| 久久精品影视| 麻豆网站免费在线观看| 一区久久精品| 高潮一区二区| 另类综合日韩欧美亚洲| 另类欧美日韩国产在线| 免播放器亚洲| 久久国产亚洲精品| 激情欧美丁香| 久久高清免费| 91九色精品国产一区二区| 免费在线日韩av| 久久99蜜桃| 高清精品久久| 少妇精品导航| 亚洲欧美成人综合| 亚洲精品无播放器在线播放| 欧美三区四区| 99久久99久久精品国产片果冰| 国产美女亚洲精品7777| 在线国产一区二区| 国产视频一区三区| 亚洲欧美在线综合| 久久激情五月激情| 麻豆国产91在线播放| 美女黄网久久| 日韩中文字幕亚洲一区二区va在线 | 亚洲视频播放| 在线精品观看| 国产精品视频首页| 麻豆视频在线看| 亚洲福利免费| 只有精品亚洲| 欧美国产免费| 精品捆绑调教一区二区三区| 国产精品www.| 精品欠久久久中文字幕加勒比| 一本一道久久a久久精品蜜桃| 久久久久亚洲精品中文字幕| 日韩一区精品字幕| 日本午夜精品久久久久| 蜜桃视频免费观看一区| 日韩在线高清| 国产亚洲网站| 日韩精品中文字幕一区二区| 欧美日韩一区二区三区不卡视频 | 日韩欧美综合| 99久久亚洲精品| 亚洲精品无播放器在线播放| 石原莉奈在线亚洲二区| 成人亚洲欧美| 色天使综合视频| 综合日韩在线| 高清日韩欧美| 亚洲欧美久久久| 国产精品久久久久久久免费软件| 午夜精品影院| 亚洲精品一二三**| 日韩av在线中文字幕| 国产精选一区| 日韩精品久久久久久久电影99爱| 麻豆高清免费国产一区| 日本va欧美va欧美va精品| 蜜桃一区二区三区在线| 欧美丝袜一区| 青青草91久久久久久久久| 日韩超碰人人爽人人做人人添| 夜夜嗨一区二区三区| 欧美.日韩.国产.一区.二区| 国产精品蜜芽在线观看| 麻豆免费精品视频| 欧美日韩国产高清电影| 亚洲国内精品| 国产精品亚洲成在人线| 久久不见久久见免费视频7| 日本在线成人| а√天堂中文在线资源8| 日韩久久电影| 日韩毛片一区| 欧美在线亚洲综合一区| 麻豆91精品| 亚洲精品**中文毛片| 鲁鲁在线中文| 日本欧美在线| 国产亚洲精品v| 日韩伦理在线一区| 国产精品日本一区二区三区在线| 国产精品欧美在线观看| 国产亚洲观看| 久久精品一区二区不卡| 日韩另类视频| 日韩高清二区| 9色精品在线| 蜜桃视频在线网站| 欧美日韩午夜| www在线观看黄色| 日韩综合小视频| 欧美日韩少妇| 99精品美女|