0
点赞
收藏
分享

微信扫一扫

jsES6全面解析

婉殇成长笔记 2022-03-11 阅读 42

一、变量的声明:
let 不可以重新声明同样变量,变量可修改,产生块级作用域
const 不可以重新声明同样变量,变量不可修改,产生块级作用域

二、箭头函数:
function的this指向window(或者理解为没有this)
箭头函数的this指向上一层的this

三、解构赋值:
1.左右两边结构必须一致(如下)
2.声明和赋值不能分开

let[{a,b},[n1,n2,n3],num,str] = [{a:100,b:5}[1,2,3],8,'lch']

四、ES6中新增数组的方法:
map 遍历 映射

let arr = [12,13,14,15];
let result = arr.map((item)=>{
    return item;
})
console.log(result);//12 13 14 15

reduce 汇总

let arr = [100,101,102,103];
let resule = arr.reduce((temporary,item,index)=>{ //result是当前临时计算的结果 初识值为0
   return temporary + item
},0)
console.log(resule ); //406 结果就是他们加起来的总和

filter 过滤

let arr = [1,3,5,7,9,11,15];//过滤出能被3整除的数字
let result = arr.filter((item)=>{
    return item % 3 === 0
})
console.log(result); 

forEach遍历

let arr = [1,3,5,7,9,11,15]; 
arr.forEach((item,index)=>{//拿出数组中的每一项
    return item
})
let obj = {
    name:'lch',
   id:123,
   number:1112
}
Object.keys(obj).forEach(key => {
    console.log(obj[key]);
})

五、ES6新增的字符串方法:
startsWith判断字符串以什么内容开始

let str = 'https://www.baidu.com/';
if(str.startsWith('https://')){ //判断字符串以什么开头
    alert('加密地址');
}else if(str.startsWith('http://')){
    alert('普通地址');
}else if(str.startsWith('git://')){
    alert('git地址');
}else{
    alert('未识别');
}

endWith判断字符串以什么名称结尾

let str = '1.txt';
if(str.endWith('.txt')){
    alert('文本文件');
}else if(str.endWith('.jpg')){
    alert('jpg图片')
}else if(str.endWith('.vue')){
    alert('vue文件')
}else{
    alert('未识别')
}
模板字符串 可以用来插入标签内容<div>${a}</div>
let a = '模板字符串';
let str = '`${a}`的使用';//将字符串连接
//打印结果  模板字符串的使用

六、ES6的面向对象:

class User{ //创建一个类名为user
    constructor(name,age){
        this.name = name;
        this.age = age;
    },
    showName(){
        console.log('我叫' + this.name + ',今年' + this.age + '岁');  
    },
}

let u = new User('lch',18);//new出一个类
u.show()//调用show方法并执行



//对象的继承
class VipUser extends User{
    constructor(name,age,level){
        super(name,age) //super为父类的意思,name和age是继承过来的
    }showName(){
        console.log('我叫' + this.name + ',今年' + this.age + '岁,等级为' + this.level);  
    },
}

let u = new VipUser ('lch',18,3);//new出一个类
u.show()//调用show方法并执行

七、JSON对象的解析:

JSON.stringify(json);//解析成为字符串
JSON.parse(str);//解析成为对象

八、Promise中使用ajax请求:

function creactPromise(url){
    return new Promise((resolve,reject)=>{//resolve解决,reject失败
    //异步代码
    $.ajax({
            url,
            dataType:'json',
            success(arr){ //success是ajax的成功回调
                resolve(arr); //resolve是Promise的成功回调
            },
            errer(err){ //error是ajax的失败回调
                reject(err);//reject是Promise的失败回调
           }
        })
    })}




//一个请求的Promise
creactPromise(url).then((res)=>{ //成功执行第一个函数,失败执行第二个函数
    console.log('请求成功')
},(err)=>{
    console.log('请求失败')
})




//如果有多个promise请求
Promise.all([
    creactPromise('请求地址1'),
    creactPromise('请求地址2')
]).then((resArr)=>{ //多个请求都成功之后才会指向成功回调,否则失败
    resArr[0],//第一个请求结果
    resArr[1] //第二个请求的结果
},(err)=>{

})


//高版本ajax的返回值支持Promise
Promise.all([
    $.ajax(url:'地址1'),
    $.ajax(url:'地址2')
]).then((resArr)=>{ //多个请求都成功的回调
    resArr[0],
    resArr[1]
},(err)=>{ //失败的回调
    
})
//Promise.all    方法必须都成功才可执行成功回调
//Promise.race   方法成功一个就可执行成功回调

九、扩展运算符
对象篇:

let objA = { a: 1, b: 2 };
let objB = { ...objA, c:3, d:4}; //这个场景也可以使用Object.assign(objA,{c:3,d:4})
console.log(objB)//{a: 1, b: 2, c: '3', d: '4'} 


let objA = { a: 1, b: 99999 };
let objB = { ...objA, b:2, c:3};
console.log(objB);//{a: 1, b: 2, c: 3}
//如果合并的对象中有相同参数b,则优先使用未使用扩展运算符的参数Object.assign则优先使用第一个参数内的相同值

数组篇:

let arrA = [1,1,1,1];
console.log([n1,n2,n3,...arrA] = [1,2,3,4,5,6,7])//[1,2,3,4,5,6,7]]
//数组的合并会更简单
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2);//[0,1,3,4,5]
console.log([...arr1, ...arr2])//[0,1,2,3,4,5]
let a = [1,2,3];
let b = a
console.log(a === b)//把地址也赋值到b了为true
let arr1 = [1,2,3];
let arr2 = [...arr1]
console.log(arr1 === arr2)//false 这里实现了数组的深拷贝,对象拷贝同理
//扩展运算符内可以添加三元运算符
let x = false;
let arrA = ['a','b','c'];
let arrB = ['c','B','a']
const arr = [...(x === true ? arrA : arrB),'条件合并数组'];//先进行小括号内的判断,随后进行...运算
console.log(arr)//结果为['c', 'B', 'a', '条件合并数组']

十、ES7预览

//includes 检查数组是否包含某个值
let arr = [1,3,5,7,9];
console.log(arr.includes(10)); //结果为false 不包含
举报

相关推荐

0 条评论