ES6的其它内容
1 新的数据类型
symbol类型 属于值类型
获取: Symbol() 返回一个symbol类型的值
var s = Symbol();
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g0P5XjVP-1662613564590)(images/image-20210126140936970.png)]
作用: 主要解决对象的属性不能重复的问题。
特点:作为对象的属性值的时候,默认不可被遍历。
2 Proxy
Proxy叫做代理。
它可以生成一个代理对象,用于保护一个目标。
使用规则:
new Proxy(target, handler)
target: 目标对象
handler: 对象
get: 函数 当通过代理对象进行目标对象的属性访问时会执行
set: 函数 当通过代理对象进行目标对象的属性设置时会执行
var obj = (function () {
var obj = {
name: "小明",
age: 33,
sex: "男"
}
// 给它设置一个代理对象
var proxy = new Proxy(obj, {
// 这个get方法就是通过代理对象读取属性的时候会执行的方法
get: function (target, propName) {
// 第一个参数是目标对象 第二个参数是属性名 最后还有一个参数 是代理对象自己
if (propName === "age") {
return target[propName] - 10;
}
return target[propName];
},
// 这个set方法就是通过代理对象设置属性的时候会执行的方法
set: function (target, propName, propValue) {
// 第一个参数是目标对象 第二个参数是属性名 第三个参数是属性值 最后还有一个参数 是代理对象自己
target[propName] = propValue;
}
})
return proxy;
})();
3 Set
Set是ES6中新增的一个数据结构。
特点:不可以有重复项。
var arr = [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3];
var s = new Set(arr);
console.log([...s]);
方法
- add(item) 向Set中添加一项 如果是没有的项 可以添加进去 如果是有的项则添加失败
- clear() 清空
- delete(item) 删除一项
- forEach(handler) 迭代方法 与ES5的迭代器方法一致
- has() 判断有没有
4 Map
说明:Map也是ES6中新增的数据结构 它可以认为是一个超级对象
特点:属性名和属性值都可以是任意的数据类型
方法
- set(key, value) 设置一组成员
- key 键名 可以是任意的数据类型
- value 键值 可以是任意的数据类型
- clear() 用于清空
- delete(key) 根据键名删除一组成员
- 注意引用类型比较的是地址
- forEach() ES5中的迭代器方法
- get(key) 根据key获取value
- has(key) 判断是否存在这个键名