面试题之ES6
程序员文章站
2023-12-21 23:33:04
...
ES6新增特性
- 块级作用域,只能在当前声明的代码块中使用:let, const ,其中 const是常量;
- 定义类的语法糖:class
- 新增基本数据类型:Symbol,特点:唯一性,隐藏性
唯一性:
let id = Symbol("id")
let id2 = Symbol("id")
console.log(id == id2) //false
隐藏性:(for...in, Object.keys() 获取不到)
let id = Symbol("id")
let obj={
[id]:'symbol'
}
for(let key in obj){
console.log(obj[key]) //空
}
获取方法:(使用Object.getOwnPropertySymbols方法会返回一个数组,可以获取到当前对象的所有用作属性名的Symbol值)
let id =Symbol("id")
let id2=Symbol("id2")
let obj={
[id]:'id',
[id2]:'id2',
'sdfdf':'sfdfd'
}
console.log(Object.getOwnPropertySymbols(obj)) //[Symbol(id), Symbol(id2)]
虽然有唯一性,但是不排除有多次使用同一个symbol值的情况:
let id =Symbol.for("id") //检测到未创建,创建
let id2 = Symbol.for("id") //检测到已创建,直接返回
console.log(id == id2) //true
console.log(Symbol.for("name")) //Symbol(name)
console.log(Symbol.keyFor("name")) //'name'
- 变量的解构赋值:
{a,b,c} = abc
; - 函数可以设置默认值,箭头函数;
- 模块化:
import/export
- Set/Map
Set():是一个能够存储无重复值的有序列表,内部使用 Object.is() 方法来判断两个数据项是否相等;
常用属性和方法:
set.add(value):添加一个数据项
set.has(value):判断某个数据项是否存在
set.delete(value):删除某个数据项
set.cleat():删除所有数据项
set.forEach(funtion(value,key,own){ ... }) :参数为元素值,索引,将要遍历的对象
set.size : 列表的数量
WeakSet(): 和Set有点类似,但不接受基本数据类型,只接受对象,没有forEach()方法和size 属性
Map(): 类似于对象,是一个存储键值对的集合,但键的范围不仅是字符串,所有类型的值包括对象都可以当做键;
常用属性和方法:
map.has(key) :查找key,返回布尔值
map.get(key):根据key查找value
map.set(key,value):添加键值对
map.delete(key):删除指定key的键值对
map.clear():删除所有键值对
map.size: 获取存储的数量
- Proxy
- 生成器:Generator / 遍历器:Iterator
- 扩展运算符 :…
- 数组和对象新增的API 和方法