ES6 Symbol、generator

Symbol

ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。ES6 数据类型除了 Number 、 String 、 Boolean 、 Objec t、 nullundefined ,还新增了 Symbol

定义let syml=Symbol('aaa‘);

let syml=Symbol('aaa');
console.log(typeof(syml));//symbol

使用typeof检测数据类型

let syml=Symbol('aaa');
console.log(syml);//Symbol(aaa)

注意:

  1. Symbol不能使用new
  2. Symbol返回唯一值
  3. Symbol是一个单独发数据类型
let syml=Symbol('aaa');
let json={
 a:"apple",
 b:"banana",
 [syml]:'foryou',
};
console.log(json[syml]);//foryou

循环for in

let syml=Symbol('aaa');
let json={
 a:"apple",
 b:"banana",
 [syml]:'foryou',
};
for(let item in json){
 console.log(item);
}
//a
//b

如果symbol作为key,for in 输不出来

generator函数

解决异步,深度嵌套
使用async会更好

语法

function * show(){
	yield
}
function *gen(){
 yield 'welcome';
 yield 'mmr';
 yield 'hello';
 return 'ooooo';
}
let g1=gen();
console.log(g1);

在这里插入图片描述

console.log(g1.next());

在这里插入图片描述

console.log(g1.next());
console.log(g1.next());
console.log(g1.next());
console.log(g1.next());

在这里插入图片描述手动调用,非常麻烦!

循环 for of(自动遍历generator)
return 中的内容不会遍历!

let g1=gen();
for(let val of g1){
 console.log(val);
}

在这里插入图片描述
1、解构赋值
let [a,…b]=gen();

function *gen(){
 yield 'welcome';
 yield 'mmr';
 yield 'hello';
 return 'ooooo';
}
let [a,b,c]=gen();
console.log(a,b,c)

在这里插入图片描述

let [a,b,c,d]=gen();
console.log(a,b,c,d)

在这里插入图片描述

let [a,...b]=gen();
console.log(a,b)

在这里插入图片描述2、扩展运算符

function *gen(){
 yield 'welcome';
 yield 'mmr';
 yield 'hello';
 return 'ooooo';
}
console.log(...gen())

在这里插入图片描述
3、Array.from

console.log(Array.from(gen()))

在这里插入图片描述
generator结合axios数据请求

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

异步:不连续,上一个操作没有执行完,下一个操作照样开始
同步:连续执行,上一个操作没有完成,下一个没法开始。

关于异步,解决方案:

  1. 回调函数
  2. 事件监听
  3. 发布订阅
  4. Promise

猜你喜欢

转载自blog.csdn.net/weixin_40119412/article/details/105027741
今日推荐