Se、Map、 Proxy、Symbo基础l知识

Se、Map、 Proxy、Symbol总结

Set

是ES6中新增的一个数据结构。可以理解为一个内容不可重复的数组 + 初始化
常用方法和属性
add(item) 用于向set对象内添加一项
item 被添加的项
注: 如果添加的是已经存在的内容 则添加失败
var set = new Set([0, 1, 2, 3, {}]);
set.add(6); // 添加成功
set.add(-0); // 添加失败

delete(item) 用于删除一项
被删除的项
注: 如果是引用类型 则必须地址一致才会删除成功
set.delete(1);

clear() 清空
set.clear();

has(item) 判定是否存在
set.has(1); // true | false

forEach(fun) 循环、迭代方法
fun(value, index,self) 函数 函数有三个参数
value 成员
index索引
self set对象本身

  var set= new Set();
        map.forEach(function(value, index, self) {
              console.log(value, index,self);  
        });

for of :ES6中新增的专门用于循环迭代器的语法

  for (var i of set) {
            console.log(i)
  }

Map

Map可以理解为一个超级对象
普通的对象: key必须是字符串
Map对象: key可以是任意的数据类型
初始化:
var map = new Map();

常用方法和属性
set(key, value) 设置
key 存储的键名
value 存储的值

var map = new Map();
 map.set("a", "a");
   map.set(1, 1);
   map.set(undefined, undefined);
   map.set(false, false);
   map.set(null, null);
   map.set({}, {});
   map.set([], []);
   map.set(function() {}, function() {});

get(key) 根据key获取value
返回值 键值
var map = new Map();
map.set(1, 1);
map.get(1); // 1

delete(key) 根据key删除属性
var map = new Map();
map.delete(1);

has(key) 根据key判定是否存在键值对
返回值 布尔值 true表示存在 false表示不存在
var map = new Map();
map.has(1); // false

forEach(fun) 循环、迭代方法
fun(value, index,self) 函数 函数有三个参数
value 成员
index索引
self map对象本身

  var map = new Map();
        map.forEach(function(value, index, self) {
              console.log(value, index,self);  
        });

for of :循环map成员
for (var i of map) {
console.log(i);
}

Proxy

代理是ES6中新增的构造函数但是它的特点是实例自身没有任何属性和方法。
Proxy是一个代理构造函数。

<script>
        // 代理是ES6中新增的构造函数 但是它的特点是 实例自身没有任何属性和方法
        // Proxy 是一个代理构造函数
        var p = (function () {
            var star = {
                name: '刘德华',
                age: 58,
                sex: "男"
            }

            var p = new Proxy(star, {
                // get是一个函数 它规定了 通过代理对象读取目标对象属性时的处理方案
                get(target, prop, self) {
                    console.log("通过代理对象访问的");
                    if (prop === "age") {
                        return 0;
                    }
                    return target[prop];
                },
                // set是一个函数 它规定了 通过代理对象目标对象属性时的处理方案
                set(target, prop, value, self) {
                    console.log("通过代理对象设置的");
                    if (prop === "age") {
                        return;
                    }
                    if (prop === "sex") {
                        return "男";
                    }
                    target[prop] = value;
                }
            })

            return p;
        })();

        // console.log(p.name);
        // console.log(p.age);
        p.name = "马德华";
        p.sex = "女";
    </script>

Symbol

Symbol是ES6中新增的种数据类型
JS中的数据类型:现在有七种 string、 number、 boolean、 null、undefined、 symbol、 object
Symbol是一种符号类型表示独一无二

 var s = Symbol();
 console.log(typeof s); // symbol
 console.log(typeof ""); // string
 console.log(typeof 1); // number
console.log(typeof null); // object   一个公认的bug
 console.log(typeof undefined); // undefined
 console.log(typeof true); // boolean
 console.log(typeof []); // object
 console.log(typeof {}); // object
 console.log(typeof function() {}); // function
 console.log(typeof new Date()); // object
 console.log(typeof new RegExp()); // object
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值