day03内容
复习
对象的扩展
Object.is(val1,val2) 类似===
+0 -0 false
NaN NaN true
Object.assign(target,o1,o2…)
复制或者合并对象 目标对象target
实例的原型对象
Object.getPrototypeOf(obj) 获取原型对象
Object.setPrototypeOf(obj,protoObj) 将protoObj设置为obj的原型对象
obj.keys() 返回可遍历的属性的属性名组成的数组
obj.values() 返回可遍历的属性的属性值组成的数组
obj.entries() 返回可遍历的属性的键值对组成的数组 [[key,value],[key,value],[key,value]]
函数的扩展
函数参数默认值的设置,length属性会发生改变
rest参数
function test(…a){}
箭头函数
()=>{}
内部this指向箭头函数声明时候的外部this
内部arguments不保存实参
数组的扩展
Array.from() 将有Iterator接口实现的数据结构转成数组,可以for-of
Array String Set Map 类数组对象
Array.of() 返回实参组成的数组,弥补new Array(10)
arr.fill(param) 使用实参填充数组
arr.find((item,index,arr)=>{})
查找符合条件的元素,返回第一个符合条件的元素或者undefined
arr.findIndex((item,index,arr)=>{})
查找符合条件的元素,返回第一个符合条件的元素的索引或者-1
arr.includes(param) 查找元素是否在数组中,返回true/false
arr.keys() 返回遍历器对象,内部存放的是index
arr.values() 返回遍历器对象,内部存放的是item
arr.entries() 返回遍历器对象,内部存放的是[index,item]
遍历遍历器对象,有Iterator接口,for-of遍历
for(let key of arr.keys()){
console.log(key);
}
Set集合
类似于数组
Map集合
类似于对象
jQuery的Ajax
异步 MyAjax()
$.ajax({
url:’’,
method:’’,
data:{},
success(res){
console.log(1);
},
error(err){
console.log(2);
}
});
console.log(3);
console.log(4);
…
console.log(100);
3先打印出来,然后打印1或者2
//获取年级,获取年级之后获取第一个年级的班级
$.ajax({
url:‘XXX/grade’,
method:‘get’,
data:{},
success(res){
//res.data 就是年级数组
$.ajax({
url:‘XXX/clazz’,
method:‘get’,
data:{gradeId:res.data[0].id},
success(res){
//res.data 就是班级数组
…
$.ajax({})
},
error(err){}
});
},
error(err){}
});
异步编程的解决方案
Promise对象
选读
Generator函数 React框架的生态圈redux-saga
async函数 Vue框架的生态圈 vuex
vue 全家桶
axios工具
内部 封装了promise和http
纯粹的http的封装
async function test(){
let res1 = await axios.get(‘xxxx/grade’);
let res2 = await axios.get(‘xxxx/clazz’,{params:{gradeId:res1.data[0].id}});
let res3 = await axios.get(‘xxxx/student’,{params:{clazzId:res2.data[0].id}});
}
test();
Promise对象
怎么创建
let p1 = new Promise((resolve,reject)=>{
$.ajax({
…
success(res){
resolve(res);
},
error(err){
reject(err);
}
})
})
怎么使用
p1.then((res)=>{
//p1状态是成功的回调函数
}).catch((err)=>{
//p1状态是失败的回调函数
}).finally(()=>{
//最终都会执行的回调函数
})
p1.then((res)=>{},(err)=>{})
状态
未完成
成功 resolve()
失败 reject()
多个promise对象处理
合并 let p = Promise.all([p1,p2,p3,p4]);
赛跑 let p = Promise.race([p1,p2,p3,p4]);