es7-8特性

es7新特性

Array.prototype.includes

Includes方法用来检测数组中是否包含某个元素,返回布尔类型值。

// includes indexof 这两个方法都可以实现检查数组是否包含某个元素
const mingzhu =["西游记","红楼梦","三国演义","水浒传"];
//判断
console.log(mingzhu.includes("西游记")); //true
console.log(mingzhu.includes("金瓶梅")); //false

指数操作符

**指数操作符 和 Math.pow() 效果一样

console.log(2 **10);//1024
console.log(Math.pow(210));//1024

es8新特性

async函数

  • async函数的返回值为promise对象。

  • promise对象的结果由async函数执行的返回值决定

函数体内部返回的结果如果是一个非Promise类型的对象,调用函数后返回的结果就是成功Promise对象,promise对象的值为返回的值。

async function fn() {
    return 'success';
}
let result = fn();
console.log(result);

如果函数体内抛出错误, 调用函数后返回的结果是一个失败的 Promise。

async function fn() {
    throw new Error('出错啦');
}
let result = fn();
console.log(result);

如果函数体内返回是一个Promise对象。

async function fn() {
    return new Promise(function (resolve, reject) {
    	//在Promise对象中如果执行resolve函数,async函数将返回成功的Promise对象。
    	//在Promise对象中如果执行reject函数,函数将返回失败的Promise对象
	});
}
let result = fn();
console.log(result);

await表达式

  • await必须写在 async函数中
  • await右侧的表达式一般为promise对象
  • await返回的是promise 成功的值
  • await的 promise 失败了,就会抛出异常,需要通过try…catch捕获处理。
//创建promise对象
const p = new Promise((resolve, reject) => {
    // resolve("用户数据");
    reject("失败啦! ");
})
// await要放在async函数中
async function main() {
    try {
        let result = await p;//await返回的是promise 成功的值
        console.log(result);
    } catch (e) { //如果调用reject函数,捕获异常
        console.log(e);
    }
}
//调用函数
main();

async和await结合实践

const fs = require('fs');

function readWeiXue1() {
    return new Promise((resolve, reject) => {
        fs.readFile("./source/为学.md", function (err, data) {
            if (err) reject(err);
            resolve(data);
        })
    });
}

function readWeiXue2() {
    return new Promise((resolve, reject) => {
        fs.readFile("./source/为学1.md", function (err, data) {
            if (err) reject(err);
            resolve(data);
        })
    });
}

function readWeiXue3() {
    return new Promise((resolve, reject) => {
        fs.readFile('./source/为学2.md', function (err, data) {
            if (err) reject(err);
            resolve(data);
        })
    });
}

async function main() {
    let wx1 = await readWeiXue1();
    let wx2 = await readWeiXue2();
    let wx3 = await readWeiXue3();
    console.log(wx1.toString());
    console.log(wx2.toString());
    console.log(wx3.toString());
}
main();

async和await结合ajax实践

function sendAjax(method, url) {
    return new Promise((resolve, reject) => {
        //创建对象
        let xhr = new XMLHttpRequest();
        //初始化
        xhr.open(method, url);
        //发送
        xhr.send();
        //事件绑定
        xhr.onreadystatechange = function () {
            if (xhr.readyState === 4) {
                if (xhr.status >= 200 && xhr.status < 300) {
                    resolve(xhr.response)
                } else {
                    reject(xhr.status);
                }
            }
        }
    })
}

async function main() {
    let l1 = await sendAjax("GET", "https://www.tianqi.com/tianqi/mapdata_new.json");
    console.log(l1);
}
main();

对象方法扩展

Object.values和 Object.entries

Object.values()方法返回一个给定对象的所有可枚举属性值的数组

Object.entries()方法返回一个给定对象自身可遍历属性[key,value]的数组。这样的结果可以创建Map。

Object.getOwnPropertyDescriptors

该方法返回指定对象所有自身属性的描述对象,这些描述对象在创建对象时候设置的。

//声明对象
const school = {
    name: "尚硅谷",
    cities: ['北京', '上海', '深圳'],
    xueke: ['前端', 'Java', '大数据', '运维']
};
console.log(Object.keys(school)); //以数组的形式返回对象的键值 ['name', 'cities', 'xueke']
console.log(Object.values(school));//以数组的形式返回对象的值 ['尚硅谷', Array(3), Array(4)]
let lv = Object.entries(school); //返回值可以当做 new Map时候的一个参数
console.log(lv);
let lvmap = new Map(lv);
console.log(lvmap);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值