JS---js基础

类数组转换为数组:

1、call调用数组的slice方法:

Array.prototype.slice.calll(arrayLike)

2、splice方法:

Array.prototype.splice.calll(arrayLike,0)

3、apply调用数组的concat方法:

Array.prototype.concat.apply([],arrayLike)

4、通过Array.from方法:

Array.from(arrayLike)

escape,encodeURL,encodeURLComponent区别:

encodeURL对整个URL进行转义,将URL中的非法字符转换为合法字符,有特殊意义的字符不会转义。

encodeURLComponent对整个URL的组成部分进行转义,一些特殊字符也会转义。

escape和 encodeURI 的作用相同,escape 是直接在字符的 unicode 编码前加上 %u,而 encodeURI 首先会将字符转换为 UTF-8 的格式,再在每个字节前加上 %。

Ajax:

创建AJAX请求步骤:

1、创建(new)XMLHttpRequest对象。

2、open创建一个Http请求,参数分别是,请求的方法、请求的地址、是否异步和用户的认证信息。

3、添加信息和监听函数。比如说通过setRequestHeader方法来为请求添加头信息和为这个对象添加一个状态监听函数。

XMLHttpRequest对象共有5个状态:当readyState变为4的时候,代表服务器返回数据接收完成,这个时候可以通过判断请求的状态。若状态是2XX或者是304的话则代表返回正常。可以通过response中的数据来对页面进行更新了。

4、当对象的属性和监听函数设置完成后,最后调用sent方法向服务器发起请求,可以传入参数作为发送的数据体。

let xhr = new XMLHttpRequest();
//创建Http请求
xhr.open("Get",url,true);
//设置状态监听函数
xhr.onreadystatechange = function(){
if(this.readyState !== 4){
return;
}
//请求成功
if(this.status === 200){
handle(this.response);
}else{
console.error(this.statusText);
}
};
//设置请求失败的监听函数
xhr.onerror = function(){
console.error(this.statusText);
};
//设置请求头信息
xhr.responseType = "json";
xhr.setRequestHeader("Accept", "application/json");
// 发送 Http 请求
xhr.send(null);

 ajax、axios、fetch区别:

ajax:在无需重新加载整个网页的情况下,能够更新部分网页。缺点:

本身是针对MVC编程,不符合前端MVVM的浪潮。

基于原生XHR开发,XHR本身的架构不清晰。

不符合关注分离原则。

配置和调用方式混乱,而且基于事件的异步模型不友好。

fetch:用的是ES6的promise对象设计的,比ajax简单得多。不是ajax的进一步封装,而是原生js,没有使用XMLHttpRequest对象。优点:
语法简单,更加语义化。

基于标准promise实现,支持async/await

更加底层,提供的API丰富(request,response)

脱离了XHR,是ES规范里最新的实现方式。

缺点:

只对网络请求报错,对400,500都当做成功的请求,服务器返回400,500错误码不会reject,只有网络错误导致请求不能完成时,fetch才会被reject。

fetch默认不会带cookie,需要添加配置项。

fetch不支持abort,不支持超时控制,不能阻止请求过程继续在后台运行,造成流量的浪费。

fetch没有办法原生监测请求的进度,而XHR可以

axios:基于promise封装的HTTP客户端。特点:

浏览器端发起XMLHttpRequests请求。

node端发起http请求。

支持Promise API 。

监听请求和返回。

对请求和返回进行转换。

取消请求。

自动转换json数据。

客户端支持抵御XSRF攻击。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值