# ES6

# 谈谈你对装饰器的理解

  • 是一种与类(class)相关的语法,用来注释或修改类和类方法
  • 装饰器是一种函数,写成@ + 函数名。它可以放在类和类方法的定义前面。

# 谈谈你对set和map等的认识

# set数据结构

  • 去除数组重复成员

  • 去除字符串重复字符

  • 实现并集(Union)、交集(Intersect)和差集(Difference)

    let a = new Set([1, 2, 3]);let b = new Set([4, 3, 2]);// 并集
    let union = new Set([...a, ...b]);// Set {1, 2, 3, 4}
    // 交集
    let intersect = new Set([...a].filter(x => b.has(x)));// set {2, 3}
    // 差集
    let difference = new Set([...a].filter(x => !b.has(x)));// Set {1}
    

# weakset

WeakSet 的成员只能是对象,而不能是其他类型的值。 WeakSet 中的对象都是弱引用,即垃圾回收机制不考虑 WeakSet 对该对象的引用,也就是说,如果其他对象都不再引用该对象,那么垃圾回收机制会自动回收该对象所占用的内存,不考虑该对象还存在于 WeakSet 之中。

# map

类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

# weakmap

只接受对象作为键名(null除外),不接受其他类型的值作为键名。 WeakMap的键名所指向的对象,不计入垃圾回收机制。