闭包

熟悉预编译、作用域、闭包
作用域、函数与函数执行、回调

  1. function test(a,b){
  2. return a + b
  3. }
  4. 这种是纯函数,不依赖外界,有输入和输出

闭包就是前端的一种集成用法,因为实际上是需要外部的数据,但是为了不被污染,就必须要有一个环状结构
es6写法

  1. let Compute = (function () {
  2. let t = 1000
  3. class Compute {
  4. constructor() {
  5. this.a = 100
  6. }
  7. add(b) {
  8. return a + b
  9. }
  10. minus(b) {
  11. return a - b
  12. }
  13. }
  14. return Compute
  15. })()
  16. let res = new Compute()
  17. console.log(res.a, res.t); // 100 undefined 这样就会把定义的变量私有化,外面无法访问了

es5写法

  1. let Compute = (function () {
  2. let a = 100
  3. function Compute() { }
  4. Compute.prototype.add = function (b) {
  5. return a + b
  6. }
  7. Compute.prototype.minus = function (b) {
  8. return a - b
  9. }
  10. return Compute
  11. })()
  12. let res = new Compute()
  13. console.log(res.a,, res.add(100)); // undefined 200

回调

callback -> 回应 -> 通讯的回应
trigger -> 触发 -》 时间的发生
call —> function
TRIGGER - > EVENT