其实这里问的就是es6新增的内容。
let、const
let, const 声明 块级作用域,是对var声明变量的补充。由于var声明可以提升变量名但不提升变量值的行为,导致Js可以跳过很多错误的检查,对我们避免问题或定位发生的错误不友好。引用了let, const 块级作用域,一个变量只能声明一次,并且需要先声明后使用,否则会发生暂时性死区。
变量的解构赋值
- 数组的解构赋值
- 对象的解构赋值
- 字符串的解构赋值
- 函数参数的解构赋值
// 数组const [a, b, c] = [1, 2, 3]// 对象const [age, sex] = {age: 18, sex: 'woman', name: '赵敏'}// 字符串的解构赋值const [str1, str2, ...strArr] = "hello wrold"// 函数的参数解构赋值const sum = ([a, b]) => a + bconst fn = ({age, sex}) => {console.log(`this is a ${sex}, his is ${age} years old.`)}
箭头函数
箭头函数之前已写过一篇介绍,这里不再重复。
Symbol
是es6引进的一个新的原始数据类型,表示独立无而二的值。
Set、Map数据结构
三种异步编程的解决方案
for…of 循环
本质
for…of 循环内部调用的是数据结构的Symbol.iterator方法。
使用范围
包括数组、类数组、Set和Map 结构,字符串、Generator对象。
数组
const arr = ['red', 'green', 'blue']for (let v of arr) {console.log(v)}
for … in 用来遍历键名,for…of 用来遍历键值。
Set和Map结构
const arr = ['red', 'green', 'blue', 'blue']let engines = new Set(arr)for (let e of engines) {console.log(e)}// Maplet es6 = new Map()es6.set('set', 'woman')es6.set('age', 18)es6.set('name', '赵敏')for (let [name, value] of es6) {console.log(name + ':' + value)}
对象
let obj = {age: 18,sex: 'woman',name: '赵敏'}// 遍历键名for (let e of Object.kesy(obj)) {console.log(e)}// 遍历键值for (let [key, value] of Object.entries(obj)) {console.log(`${key}: ${value}`)}
Proxy
是一种元编程,用来代理操作的默认行为。Proxy 本身是一个构造函数,可以用来改写对象的默认行为。
Proxy 还提供了13种Api,去操作对象。
Vue3.0放弃了Obejct.defineProperty, 而是使用Proxy 去绑定数据和属性。
优点:
proxy 速度更快
13种Api
Object.definePropery 无法监听属性的添加、删除,也不能监听引用类型的数据变更。但是Proxy 可以。
let person = {age: 18, name: '赵敏'}let proxy = new Proxy(person, {get: function(target, property) {if (property === 'age') {return 20}}})console.log(proxy.age) // 20
Reflect
目的:
将函数内部的方法放在Reflect 上
让操作对象的返回值更合理
使操作Object 编程函数行为
Reflect对象对应的方法和Proxy对象对应的方法一一对应
let obj = {age: 18, sex: 'woman'}console.log(Reflect.get(obj, 'age')) // 18console.log(Reflect.set(obj, 'age', 20))console.log(Reflect.get(obj, 'age')) // 20console.log(Reflect.has(obj, 'age')) // trueReflect.deleteProperty(obj, 'age')console.log(Reflect.has(obj, 'age')) // falseconosle.log(Reflect.get(obj, 'age')) // undefined
