2019-10 上旬

# 2019-10-10: 什么是闭包,如何防止闭包内存泄露

好好想想先 😌
  • 参考链接

  • 一句话

    • 它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中
    • 在退出函数之前,将不使用的局部变量全部删除(IE)

# 2019-10-09: 什么是调用栈

好好想想先 😌
  • 参考链接

  • 一句话

    • 调用栈是解释器(比如浏览器中的 JavaScript 解释器)追踪函数执行流的一种机制。当执行环境中调用了多个函数函数时,通过这种机制,我们能够追踪到哪个函数正在执行,执行的函数体中又调用了哪个函数。
    • 每一个进入调用栈的都称为调用帧

# 2019-10-08: jsBridge 及其原理

好好想想先 😌
  • 参考链接

  • 一句话

    • JS 调用 Native
      • 注入 API:通过 WebView 提供的接口,向 JavaScript 的 Context(window)中注入对象或者方法,让 JavaScript 调用时,直接执行相应的 Native 代码逻辑,达到 JavaScript 调用 Native 的目的。
      • 拦截 URL SCHEME:webivew 跳原生页面
    • Native 调用 JS:直接通过 webview 调用 window 上的方法

# 2019-10-07: 什么是 csrf

好好想想先 😌
  • 参考链接

  • 一句话

    • CSRF,即(Cross-site request forgery), 中文名为跨站请求伪造
    • 请求是跨域的。可以看出请求是从恶意网站 B 上发出的
    • 通过 img, script 等标签来发起一个 GET 请求。因为这些标签不受同源策略的限制
    • 发出的请求是身份认证后的。这一点是 CSRF 中最重要的一点
    • 防范:校验 referer,添加 token

# 2019-10-06: 怎样用 Chrome 进行性能分析

好好想想先 😌

# 2019-10-05: 301, 302, 304 状态码

好好想想先 😌

# 2019-10-04: webpack output.globalObject 的作用

好好想想先 😌

# 2019-10-03: 什么是层叠上下文、层叠等级和层叠顺序。

好好想想先 😌

# 2019-10-02: webpack devtool 的值有哪些,有何区别。什么能在线上使用。

好好想想先 😌

# 2019-10-01: 什么是 TS override 和 overload

好好想想先 😌
  • 参考链接

  • 一句话

    • override: 子类复写父类的方法
    • overload: 指函数不同类型的参数返回不同类型的结果
    class Foo {
      myMethod(a: string);
      myMethod(a: number);
      myMethod(a: number, b: string);
      myMethod(a: any, b?: string) {
          alert(a.toString());
      }
    }