ES6 理论知识

1 关于函数

  • 什么是高阶函数?

    把函数作为参数或者返回值是函数

  • 柯里化函数(函数更加具体,核心像bind,可以保留参数) => 思考:反柯里化(让函数的调用方式变大)
    Object.prototype.toString.call 像这里toString需要在对象的原型上调用,我们希望哪里都可以调用,这就是反柯里化,然函数的调用变大 需要百度

  • AOP(装饰模式) 将函数进行包装

    AOP(面向切面编程)的主要作用是把一些跟核心业务逻辑无关的功能抽离出来,其实就是给原函数增加一层,不用管原函数内部实现

  • 发布订阅(发布者和订阅两者是没有关系的,可以做解耦) 观察者模式(核心是基于发布订阅的,将观察者放到被观察者上面,当被观察者发送变化了会通知观察者 events on emit)

2 promise

  • promise 中的链式调用如何中断 ?
  • Promise.finally实现原理?
  • Promise有哪些优缺点?
    优点:解决异步并发问题Promise.all ;链式调用
    缺点:还是基于回调的;promise无法终止 new Promise立即执行的,只能说抛弃这次结果
  • promise.race的原理
  • generator & co
  • async + await 语法糖

3 ES6

  • let & const (1.没有变量提升 2.不会污染全局作用域 3.不能重复声明 4.拥有自己的作用域{}) import提升到当前代码顶部
  • Symbol 第六种基本数据类型 独一无二 11种symbol的定义方式 元编程
  • spread 深拷贝 数据类型的判断
  • set & map(weakMap)去重 (交集 并集 差集) V8引擎的垃圾回收 公开课视频
  • definedProperty proxy、reflect (数据劫持 代理)
  • ES6中的模块化(静态导入/ 动态导入) import export

拓展js中的数据结构

继续

  • es6中的类(类的继承(公有 实例上的属性)、静态属性、静态方法(static)、super关键词)

  • 装饰器的应用

  • arrowfunc 箭头函数 (没有this,没有arguments,没有原型)

  • compose方法 reduce map filter some every find findIndex 应用

  • 模板字符串 (模板引擎的实现原理)