zoukankan      html  css  js  c++  java
  • 第五节:ES6用法之Reflect、Promise、Iterator

    一. Reflect用法

    1. 说明

     Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。

     Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法。

     Reflect 是一个内置的对象,它提供拦截 JavaScript 操作的方法,这些方法与处理器对象的方法相同。Reflect不是一个函数对象,因此它是不可构造的。

    2. Reflect.apply()

    3. Reflect.construct()

    4.Reflect.define​Property()

    5. Reflect.delete​Property()

     

    6.Reflect.get()

    7. Reflect.get​OwnProperty​Descriptor()

    8. Reflect.get​PrototypeOf()

    9. Reflect.isExtensible()

    10. Reflect.own​Keys()

    11. Reflect.prevent​Extensions()

    12. Reflect.set()

    13. Reflect.set​PrototypeOf()

     

    二. Promise用法

    1. 诞生背景

     ajax要依次请求3个文件,在这之前只能通过回调来实现,导致嵌套越来越多,出现回调地狱现象。

    ajax('static/a.json', res => {
        console.log(res)
        ajax('static/b.json', res => {
            console.log(res)
            ajax('static/c.json', res => {
                console.log(res)
            })
        })
    })

    2. 基本语法

     参考:https://www.cnblogs.com/yaopengfei/p/12341264.html

     

    3. 常用Api

    4. 练习

    三. Iterator用法

    1. 基本语法

      let authors = {
            allAuthors: {
                fiction: [
                    'Agatha Christie',
                    'J. K. Rowling',
                    'Dr. Seuss'
                ],
                scienceFiction: [
                    'Neal Stephenson',
                    'Arthur Clarke',
                    'Isaac Asimov',
                    'Robert Heinlein'
                ],
                fantasy: [
                    'J. R. R. Tolkien',
                    'J. K. Rowling',
                    'Terry Pratchett'
                ]
            }
        }
        authors[Symbol.iterator] = function() {
            let allAuthors = this.allAuthors
            let keys = Reflect.ownKeys(allAuthors)
            let values = []
            return {
                next() {
                    if (!values.length) {
                        if (keys.length) {
                            values = allAuthors[keys[0]]
                            keys.shift()
                        }
                    }
                    return {
                        done: !values.length,
                        value: values.shift()
                    }
                }
            }
        }
    View Code

    这个代码在数据结构上部署了 Iterator 接口,我们就可以用 for...of 来遍历代码了:

    for (let value of authors) {
        console.log( `${value}` )
    }

    2. 迭代器协议

    3. 可迭代协议

     

     

    !

    • 作       者 : Yaopengfei(姚鹏飞)
    • 博客地址 : http://www.cnblogs.com/yaopengfei/
    • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
    • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
     
  • 相关阅读:
    接口自动化--连接数据库
    接口自动化--日志类封装(logging)
    接口自动化--读取Excel操作(openpyxl)
    接口自动化--requests库封装
    Java 多线程--- 创建线程、Thread类、synchronized
    final 关键字
    static 关键字
    Java异常处理
    String、StringBuilder、StringBuffer
    HashMap / HashTable / HashSet
  • 原文地址:https://www.cnblogs.com/yaopengfei/p/14655323.html
Copyright © 2011-2022 走看看