ES学习ES7之后的语法及其知识点归纳——第五天

本文详细介绍了ES7的Array.prototype.includes用于检测数组元素,指数操作符**进行幂运算,以及ES8的async/await异步处理,Object.values和Object.entries获取对象属性值与键值对,和Object.getOwnPropertyDescriptors获取对象属性描述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. ES7新特性

1.1 Array.prototype.includes:检测数组中包含某个元素

返回值:布尔类型

1.2 指数操作符: **,用来实现幂运算

作用与Math.pow是一样的。
示例代码:

<script>
        // includes
        const friends = ['小红', '小明', '小张', '小计'];
        console.log(friends.includes('小红'));  //true
        console.log(friends.includes('傻逼'));  // false

        // ** 
        console.log(2 ** 10);   //1024
        console.log(Math.pow(2, 10));  //1024
    </script> 

2. ES8新特性

2.1 async和await

async函数:

  1. async函数的返回值为promise对象。
  2. promise对象的结果由async函数执行的返回值决定。

await表达式:

  1. await关键字必须写在async函数中。
  2. await右侧的表达式为promise对象
  3. await的返回值是promise成功的值,resolve
  4. 如果promise对象返回失败,就会抛出异常,这时需要使用try…catch代码块来作捕获处理
 <script>
        // 发送AJAX 请求,返回的结果是 Promise 对象
        function sendAJAX(url) {
            return new Promise((resovle, reject) => {
                //1. 创建对象
                const x = new XMLHttpRequest();

                //2. 初始化
                x.open('GET', url);

                //3. 发送
                x.send();

                //4. 事件绑定
                x.onreadystatechange = function () {
                    if(x.readyState === 4) {
                        if (x.status >= 200 && x.status < 300) {
                            //成功
                            resovle(x.response);
                        }else {
                            //失败
                            reject(x.status);
                        }
                    }
                }
            })
        }
        // 测试
        // sendAJAX("https://api.apiopen.top/getJoke").then(value => {
        //     console.log(value);
        // }, reason => {})

        // async 与 await 测试
        async function main() {
            //发送 AJAX 请求
            let result = await sendAJAX("https://api.apiopen.top/getJoke");

            
            console.log(result);
        }

        main();

2.2 Object.values 和 Object.entries

  1. Object.values(): 返回一个给定对象的所有可枚举属性值的数组。
  2. Object.entries():返回一个给定对象自身可遍历属性 [key,value] 的数组。

2.3 Object.getOwnPropertyDescriptors

返回指定对象所有自身属性的描述对象
示例:

 <script>
        const study = {
            name: '海军',
            school: '二工大',
            subject: ['数学', '编程', '算法']
        }

        // 获取对象所有的键
        console.log(Object.keys(study));   //["name", "school", "subject"]

        // 获取对象所有的值
        console.log(Object.values(study));  //["海军", "二工大", Array(3)]

        // entries
        console.log(Object.entries(study));  //[Array(2), Array(2), Array(2)]
        //创建Map
        const m = new Map(Object.entries(study));
        console.log(m.get('school'));   //二工大

        // 对象属性的描述对象
        console.log(Object.getOwnPropertyDescriptor(study));  //undefined
    </script>

及时补充更新!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值