美文网首页
【学习笔记】ES6 标准 - Symbol & generato

【学习笔记】ES6 标准 - Symbol & generato

作者: Spidd | 来源:发表于2019-06-20 15:40 被阅读0次
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模块化</title>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
    <script>

        /*----------ES6 Symbol & generator-----------*/
        /*
        * 数据类型:
        * number、string、boolean....Symbol(新增类型)*/
        /*Symbol
        * 【注意】
        * 1.Symbol 不能new
        * 2.Symbol() 返回是一个唯一值
        * 3.Symbol 作为属性 for in 循环不会出来
        * */
        {
            let syml = Symbol('aaa');  //定义
            //let sym2 = new Symbol('aaa'); // 报错Symbol is not a constructor
            console.log(syml);  //使用
            console.log(typeof syml) // symbol
            /*type 检测类型   7种
            * number、string、boolean、Object、undefined、function、(symbol)新增
            * */
            // console.log(typeof null) // Object
            let json = {
                [syml]:1,
            };
            console.log(json[syml]) //1;
            for(let key in json){
                console.log(key); //Symbol 作为属性 for in 循环不会出来;
            }
        }
        // ------ generator函数(生成器) ------
        /*
        * 【作用】解决异步 深度嵌套传值的问题,刚出很火。现在多用async代替
        * 【语法】function * show(){
        *   yield 数据 // 生产
        * }
        * */
        {
            function * gen() {
                yield 'welcome';
                yield 'to';
                return '牧马人'
            }
            let g1 = gen();
            // console.log(g1); // Object gen
            // console.log(g1.next()); // {value: "welcome", done: false}
            // console.log(g1.next()); // {value: "to", done: false}
            // console.log(g1.next()); // {value: "牧马人", done: true}
            // console.log(g1.next()); // {value: undefined, done: true}
            // 上述调用,手动调用,麻烦

            // 配合 for..of
            for (let key of g1){  //for ..of 自动遍历 generator函数
                console.log(key); //只会返回 value  return的东西不会遍历
            }

            //配合结构赋值
            let [...a] = gen();
            console.log(a); // ["welcome", "to"]

            //配合扩展运算符
            console.log(...gen()); // welcome to

            //配合Array.from()
            console.log(Array.from(gen())); // ["welcome", "to"]

            //配合axios 模拟实战
            {
                // https://api.github.com/users/getSpidd
                function * gen(){
                    let val = yield 'getSpidd'
                    console.log(val)
                    yield axios.get(`https://api.github.com/users/${val}`)
                }
                let g1 = gen();
                let username = g1.next().value;
                g1.next(username).value.then(res=>{
                    console.log(res)
                })
            }
        }

    </script>
</head>
<body>
<h1></h1>
</body>
</html>

相关文章

  • 【学习笔记】ES6 标准 - Symbol & generato

  • ES6学习笔记——Symbol

    1、概述 ES5 的对象属性名都是字符串,这样有一个问题是容易造成属性名的冲突。比如,你使用了一个他人提供的对象,...

  • ES6学习笔记--Symbol

    创建符号值 Symbol没有字面量形式,这在JS的基本类型中是独一无二的.可以用全局函数来创建符号值 符号值是基本...

  • ES6补充以及Node事件轮询

    Symbol es6中新增了symbol类型,symbol类型的值是通过symbol函数生成的,相同symbol函...

  • 深入理解ES6六

    Symbol ES6新增的数据类型Symbol 创建Symbol:通过去全局的Symbol函数创建一个Symbol...

  • ES6 学习笔记(8) Symbol

    1. 概述 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第...

  • ES6学习笔记之Symbol

    前端技术日新月异,不断有新技术出现,我们就需要不断地学习新知识,虽然ES6已经提出很久了,但是最近我才有时间静下心...

  • es6学习笔记之Symbol

    ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。它是 JavaScript 语言的第七种数据类型...

  • ES6学习笔记九|Symbol

    1. 概述 ES6引入了一种新的原始数据类型Symbol,表示独一无二的值。它是JavaScript语言的第七种数...

  • ES6 笔记 Symbol

    Symbol是为了解决属性名冲突的问题而引入的,想要创建不会冲突的属性,可以new一个Symbol,每个创建的Sy...

网友评论

      本文标题:【学习笔记】ES6 标准 - Symbol & generato

      本文链接:https://www.haomeiwen.com/subject/psadqctx.html