1.1 ES6代理 Proxy
Proxy的行为很简单:将Proxy的所有内部方法转发至target。
var person = {
name:"js",
age:23
};
var p = new Proxy(person,{
get:function(target, prop, receiver){
console.log("你访问了person的属性");
return target["name"];
}
});
console.log(p.age);
// 你访问了person的属性
// js
1、handler.get()方法用于拦截对象的读取属性操作。
1.2 Promise执行多个ajax的请求
function a (){
return new Promise(function(resolve,reject){
setTimeout(function (){
console.log('执行任务a');
resolve('执行任务a成功');
},1000);
});
}
function b (){
return new Promise(function(resolve,reject){
setTimeout(function (){
console.log('执行任务b');
resolve('执行任务b成功');
},2000);
});
}
function c(){
console.log('最后执行c');
}
//只有在a成功执行了之后,才执行b,在b成功执行了之后再执行C(谁先请求执行谁)
a().then(b()).then(c());
1.3 数组forEach
//forEach不支持return
arr.forEach(function(item,index)){
console.log(item)
}
//对象是不能被遍历的
//Object.keys将对象的key作为新的数组
let obj = {school:'js',age:8}
for(let val of Object.keys(obj)){
console.log(val) // school age
console.log(obj[val]) // js 8
}
1.4 filter
返回结果: 过滤后的新数组
回调函数的返回结果:如果返回true 表示这一项放到新数组中
let arr = [1,2,3,4,5]
let res = arr.filter((item,index)=>{
// return item < 5
return item>2&&item<5 // [3,4]
})
console.log(res)
1.5 map
映射
将原有的数组映射成一个新数组
let arr1 = [1,2,3,4,5]
// 不操作原数组 返回新数组 回调函数中返回什么这一项就是什么
let newArr1 = arr1.map(function(item,index){
//return 2 // 每一项都变成2了 [2,2,2,2,2]
//return item*3 // [3,6,9,12,15]
return `<li>${item} ${index}</li>`
})
console.log(newArr1)
console.log(newArr1.join(''))
1.5 promise怎么用
function buyPack(){
return new Promise((resolve,reject)=>{
setTimeout(()=>{
if(Math.random()>0.5){
resolve('OK')
}else{
reject('No')
}
},Math.random()*1000)
})
}
buyPack().then(function(data){
console.log(data);
},function(data){
console.log(data);
})