1. Proxy 可以实现什么功能

    ES6 的新语法
    可以用于实现 Object.defineProperty 类似的功能,用于对对象的内部方法进行代理

    1. let p = new Proxy(target, handler)

    target 参数是被代理的对象,handler 对象用来自定义对象的内部方法,下表里有对对应内部方法的代理方式,handler 当中可以添加对应的处理器函数来代理对应的内部方法

    内部方法 处理器函数
    [[GetPrototypeOf]] getPrototypeOf
    [[SetPrototypeOf]] setPrototypeOf
    [[IsExtensible]] isExtensible
    [[PreventExtensions]] preventExtensions
    [[GetOwnProperty]] getOwnPropertyDescirptor
    [[DefineOwnProperty]] defineProperty
    [[HasProperty]] has
    [[Get]] get
    [[Set]] set
    [[Delete]] deleteProperty
    [[OwnPropertyKeys]] ownKeys
    [[Call]] apply
    [[Construct]] construct

    Vue3.0 中就使用了 Proxy 为每个对象的属性添加响应式d代理,优点是:性能上更好,并且扩展了一些其他数据的监听。缺点是兼容性问题

    1. 对对象与数组结构的理解

    ES6 提供的提取数据的模式,能够在对象和数据上取到想要的数值
    (1)数组的解构

    1. const [a, b, c] = [1, 2, 3]
    2. /// a 1, b 2, c 3

    left hand 的数组内对应位置的变量,被 right hand 的数组对应位置的值初始化

    1. const [a,,c] = [1, 2, 3]
    2. /// a 1, c 3

    还可以通过调整 , 的位置,空出对应的位置,只赋值给对应位置的变量
    (2)对象的解构
    解构对象是通过属性的名称为匹配条件,初始化相应的变量。这里即使对调位置也不会影响结果,因为对象的解构赋值以属性名为依据

    1. const student = { name: 'Bob', age: 24 }
    2. const { name, age } = student
    1. 如何提取高度嵌套的对象里的指定属性

    遇到嵌套程度非常深的对象的几种写法

    1. const school = {
    2. classes: {
    3. student: {
    4. name: 'Bob',
    5. age: 24
    6. }
    7. }
    8. }
    9. /// 逐层解构
    10. const { classes } = school
    11. const { student } = classes
    12. const { name, age } = student
    13. // name 'Bob', age 24
    14. // 更优雅的写法
    15. const { classes: { student: { name, age } } } = school

    注意这里的 classes 和 student 因为是中间量,是不会被保留的

    1. 对 rest 参数的理解

    ES6 的新语法,用于函数的形式参数上,把分离的参数整合成一个数组
    可以用于获取多余的参数,或是处理函数参数个数不确定的情况
    有 ES6 的兼容性问题,并且只能用于函数参数的末尾处,后面不能有其他的参数

    1. function multiple(...args) {
    2. return args.reduce((a, b) => a + b, 0)
    3. }
    4. multiple(1, 2, 3, 4) // 10
    1. 模板语法与字符串处理
    • 用于字符串拼接

      • 空格、缩进、换行都会被保留
      • 支持利用操作符 ${} 插入变量、表达式等等
    • 放到函数后可以处理字符串

    函数将会接收如下参数,第一个参数是一个数组,是字符串固定内容的一个数组,后面的参数数量不固定,都是插入的值。最终返回一个值,这样可以用于处理模板字符串

    • image.png