欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ES6 Map集合使用

程序员文章站 2023-12-21 23:15:22
...
   /**
         * ECMAScript6中的Map集合
         *
         * Map类型是一种存储着许多键值对的有序列表, 其中键名和键值支持所有的数据类型
         * 键名的判断是通过调用 Object.is()方法实现的,所以 5 和 "5" 被判断为两个类型
         *
         */
         let map = new Map();
         map.set("name","song");
         document.write(map.get("name") + "<br/>"); // song
         document.write(map.get("age") + "<br/>"); // undefined

         /**
          * Map集合支持的方法
          *
          * has(key) 检测指定的key是否存在Map集合中
          * delete(key) 从Map集合中移除指定的key键名和值
          * clear() 移除Map集合中所有的键值对
          *
          * */
         document.write(map.has("name") + "<br/>"); // true
         document.write(map.size + "<br/>"); //  1
         // 清空键值对
         map.clear();
         document.write(map.size + "<br/>"); //  0
         map.set("age",1);
         document.write(map.size + "<br/>"); //  1
         // 删除指定键
         map.delete("age");
         document.write(map.size + "<br/>"); //  0

         map.set("name","zhangsan");
         map.set("age",20);

         // 遍历Map
         map.forEach(function(value, key, ownerMap){
             console.log(key + " >>> " + value)
         });

         map.forEach(function(value, key) {
             console.log(key + " >>> " + value)
         });
         // 遍历过程中会按照键插入Map集合的顺序处理

        /**
         *  WeakMap 是弱引用Map集合,也是用于存储对象的弱引用。
         *
         *  WeakMap集合最大的用途是保存Web页面中的DOM元素,使用WeakMap来跟踪DOM元素,当DOM元素消失时,可以自动销毁集合中相关对象
         *
         *  weakMap集合只支持 has() 可以检测给定键值存在性  以及 delete()
         *  不支持 clear()
         */
 
        let weakMap = new WeakMap();
        let element = document.querySelector(".content");
        console.log(element.innerHTML.length); // Hello World
        weakMap.set(element,"original");
        weakMap.get(element);
        console.log(weakMap.has(element)); // true;
        // Person是一个立即调用函数表达式
        var Person = (function(){

            let privateMap = new WeakMap();

            /**
             *  Person的构造使用 WeakMap集合来存放私有数据, 键是this,值是对象包含的私有信息.
             *  只要实例对象被销毁,相关信息也会被销毁,从而保证了信息的私有性。
             *  如果你想使用非对象作为键名,那么普通Map集合时你唯一的选择
             */
            function Person(name) {
                privateMap.set(this,{name:name});
            }

            Person.prototype.getName = function() {
                return privateMap.get(this).name;
            }

            return Person;
        }());

        let p = new Person("song");
        console.log(p.getName());

 

上一篇:

下一篇: