碎片时间,睡前面经03

98 阅读2分钟

AJAX,FETCH,AXIOS三者区别?

三者都用于网络请求,但维度不同。

image.png

异步js与xml的技术统称。

fetch具体的原生API。是个全局api。fetch和XMLHttpRequest是一个级别。promise回调函数。

axios是第三方库,用npm可以安装的库。随着vue火起来。axios內部可以使用api来实现。

用XMLHttpRequest实现ajax?以及源码。

定义函数,使用函数XMLHttpRequest()进行网络获取,get请求,等待state变化。

lib库和api的区别?

api是原生函数,库是第三方的网络请求。

节流和防抖区别?分别用于什么场景?手写。

防抖debounce:先抖动着,什么时候停止,再执行下一步.

    function debounce(fn,wait){
        let time = 0;
        return function (){
            //有操作记录就清除
            if(time){clearTimeout(time)}
            //不触发就执行
            time = setTimeout(()=>{
            fn.apply(this,arguments)
            time=0
        },wait)
)
        }
    }

节流throttle:节省交互沟通,一定时间间隔内只发生一次请求。

    function throttle(fn,wait){
    let time = 0;
    return function (){
    if(time) return //回去等
    time = setTimeout(()=>{
        fn.apply(this,arguments)
        time = 0;
     },wait)
    }
}

节流关注过程,防抖关注结果。

px, % em rem vw/vh有什么区别?

px和%

px基本单位,绝对单位(其他的都是相对单位)

%相对于父元素的宽度比例。

em 和 rem

前者相对于当前元素的font-size

后者相对于html根元素的font-size

vw 屏幕宽度的1%,vh 屏幕高度的1%

vmin 两者的最小值,vmax两者的最大值。

手写new关键字

创建实例对象

let o = {}

构建实例o与类P的关系(使它们指向同一个原型对象)

o.__proto__=P.prototype.

改变o的this指向。例如:this.a = 1;变成o.a=1;

P.call(o,args)

最后return返回实例对象o;

ES6有哪些新特性?

比如新增了let const.let和const具有块级作用域,不存在变量提升。新增了箭头函数,巧妙的运用this。新增了promise解决回调地狱的问题。可以利用import export来实现导入导出。新增了【...arr】结构赋值。新增了class类的概念,类似于函数一种特殊的对象。

描述一下ES6中的class类

通过class关键字创建类,类名我们习惯首字母大写。

在类里有constructor构造函数,可以接受传递过来的参数,同时返回给实例对象。

在constructor中只要new生成实例后,this就会指向实例,实例就会自动调用这个函数。

也会有super继承父类扩展自己的方法,利用super调用父类的构造函数。且super要在使用this之前调用。

说说箭头函数?

没有this指向,this指向外围作用域。

call,apply,bind无法改变箭头函数的this指向

箭头函数没有argument伪数组,没有原型对象prototype.


好困,心脏痛,先睡了。