作业

144 阅读4分钟

(一)、get请求和 post请求的区别是什么?

get请求将参数放在url当中,post请求将参数放在请求体当中,理论上post更安全。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。GET在浏览器回退时是无害的,而POST会再次提交请求。

GET产生的URL地址可以被Bookmark,而POST不可以。

GET请求会被浏览器主动cache,而POST不会,除非手动设置。

GET请求只能进行url编码,而POST支持多种编码方式。

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

GET请求在URL中传送的参数是有长度限制的,而POST么有。

对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET参数通过URL传递,POST放在Request body中。

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

GET产生一个TCP数据包;POST产生两个TCP数据包。

(二)、闭包

f116c4a9b8e64bbc9706249813a9b743_tplv-k3u1fbpfcp-watermark.png 1、闭包是什么?闭包是指有权访问另一个函数作用域中的变量的函数。

2、形成闭包的原因?内部的函数存在外部作用域的引用就会导致闭包。

3、闭包的作用?保护函数的私有变量不受外部的干扰。形成不销毁的栈内存。 保存,把一些函数内的值保存下来。闭包可以实现方法和属性的私有化

    var n = 10
    function fn() {
        var n = 20
        function f() {
            n++;
            console.log(n)
        }
        return f
    }

    var x = fn()
    x()//21
    console.log(n);//10

这里的 i 是全局下的 i,共用一个作用域,当函数被执行的时候这时的 i=3,导致输出的结构都是3。

   var data = [];
     for (var i = 0; i < 3; i++) {
         data[i] = function () {
             console.log(i);
         };
     }
     data[0]();
     data[1]();
     data[2]()

(三)、 什么是冒泡和挖洞

当一个子标签触发某一个事件(比如click)后,该事件会从顶级父标签一级一级往该标签传递,这个过程叫做挖洞(捕获)

什么是JS事件冒泡? 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次的最顶层,即document对象(有些浏览器是window)。 当找到该子标签之后事件会再从子标签开始一级一级往父标签传递,这个过程叫做冒泡。

(四)、call , apply 和bind的区别

16882a5b9c37c1ca.png call 和 apply 的共同点

它们的共同点是,都能够改变函数执行时的上下文,将一个对象的方法交给另一个对象来执行,并且是立即执行的。调用 call 和 apply 的对象,必须是一个函数 Function。 bind() 方法创建一个新的函数,在调用时设置 this 关键字为提供的值。并在调用新函数时,将给定参数列表作为原函数的参数序列的前若干项。bind 方法 与 apply 和 call 比较类似,也能改变函数体内的 this 指向。不同的是,bind 方法的返回值是函数,并且需要稍后调用,才会执行。而 apply 和 call 则是立即调用。 juejin.cn/post/684490…

猫吃鱼,狗吃肉,奥特曼打小怪兽。

有天狗想吃鱼了

猫.吃鱼.call(狗,鱼)

狗就吃到鱼了

猫成精了,想打怪兽

奥特曼.打小怪兽.call(猫,小怪兽)

猫也可以打小怪兽了

(五)、 什么是原型链?

一个对象A调用方法的时候,会先从自身找有没有这个方法,如果没有就找自己的原型,看有没有该方法,没有就继续找对象A的父类B的原型,就这样一级一级往上找,称之为原型链。

image.png