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 应用
模板字符串 (模板引擎的实现原理)