ES6功能教程

2021-05-23  本文已影响0人  雷雨leiyu

Symbol

ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。

Symbol 值作为属性名时,该属性是公有属性不是私有属性,可以在类的外部访问。但是不会出现在 for...in 、 for...of 的循环中,也不会被 Object.keys() 、 Object.getOwnPropertyNames() 返回。如果要读取到一个对象的 Symbol 属性,可以通过 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到。

let sy = Symbol("KK");
console.log(sy);   // Symbol(KK)
typeof(sy);        // "symbol"
// symbol作为键名
let syObject = {
  [sy]: "kk"
};

Proxy

Proxy是在对象的外层搭了一层拦截,任何对象的操作都要经过这层拦截。

const target = {name: "dennis"};
const handler = {get: function(target, key) {} };
const proxy = new Proxy(target, handler);

Reflect

ES6 中将 Object 的一些明显属于语言内部的方法移植到了 Reflect 对象上,未来的新方法会只部署在 Reflect 对象上。

let exam = {
    name: "Tom",
    age: 24,
    get info(){
        return this.name + this.age;
    }
}
Reflect.get(exam, 'name'); // "Tom"

Map与Set

let user = new Map([["key1", "value1"], ["key2", "value2"]]);
// 合并Map
var merged = new Map([...first, ...second]);

Map与Object的区别

上一篇 下一篇

猜你喜欢

热点阅读