AJAX,FETCH,AXIOS三者区别?
三者都用于网络请求,但维度不同。
异步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.
好困,心脏痛,先睡了。