Q:get 请求传参长度的误区

A:
误区:我闪经常说 get 请求参数的大小存在限制,而 post 请求的参数大小是无限制的。实际上 HTTP 协议从未规定 GET/POST 的请求长度限制是多少,对 get 请求参数的限制是来源与浏览器或 WEB 服务器,浏览器或 WEB 服务器限制了 URL的长度。

  • HTTP 协议没有规定 GET 和 POST 的长度限制
  • GET 的最大长度显示是因为 浏览器 和 WEB服务器限制了 URL 的长度
  • 不同浏览器和 WEB 服务器,限制的最大长度不一样

    Q:get 和 post 请求在缓存方面的区别

    A:

  • get 请求类似于查找的过程,用户获取数据,可以不用每次都与数据库连接,所以可以使用缓存

  • post 不同, post 做的一般是修改和删除的工作,所以必须与数据库交互,不能使用缓存

因此 get 请求适合于请求缓存

Q:说一下闭包

A: 一句话概括:闭包就是能够读取其他函数内部变量的函数,或者子函数在外调用,子函数所在的父函数的作用域不会被释放

Q:说一下类的创建和继承

A:

  • 类的创建(ES5):
    • 定义一个 function,这个 function 为类的构造函数。
    • 在这个构造函数的 prototype 增加其方法
    • 使用 new 操作符来声明这个构造函数,其 this 会指向创造出来的实例对象。
  • ES5 常用的
  • 类的继承:

    1. 原型链继承
      1. Child.prototype = new Father();
    • 会存在引用值共享的问题
    1. 借用构造函数

      1. function Child() {
      2. Father.call(this);
      3. }
    2. 组合继承,结合原型链继承与借用构造函数继承,又称为伪经典继承

      1. function Child() {
      2. Father.call(this);
      3. }
      4. Child.prototype = new Base();
    • 会存在构造函数执行两次
    1. 寄生组合继承,又称为经典继承
      1. function Child(){
      2. Father.call(this);
      3. }
      4. Child.prototype = Object.create(Father.prototype);
      5. Child.constructor = Father;
    • 使用 Object.create 方法绕过 Father 的实例操作,只拿其构造函数的方法

      Child.prototype 只要重写,会导致在重写前在 Child.prototype 方法没有。所以只能在继承后再定义 Child 的在 prototype 的方法

  • ES6 class ```javascript class Father{ constructor() {

    1. this.props = [];

    } method() { } }

class Child extends Father{ constructor() { super(); } method() {

} static staticMethod() {

} } ```