Generator 函数

Generator 函数特性
可以通过 yield 关键字,把函数的执行流挂起,为改变执行流程提供了可能

Generator 有两个区分于普通函数的部分:

  1. 一是在 function 后面,函数名之前有个 *
  2. 函数内部有 yield 表达式
  3. 其中 * 用来表示函数为 Generator 函数,yield 用来定义函数内部的状态

next()调用
一般情况下,next 方法不传入参数的时候,yield 表达式的返回值是 undefined 。当 next 传入参数的时候,该参数会作为上一步yield的返回值

done表示函数是否执行完,true执行完,否则false

value获取的是yield后面的值

return 方法

  1. return 方法返回给定值,并结束遍历 Generator 函数
  2. return 方法提供参数时,返回该参数;不提供参数时,返回 undefined

Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol
“use strict”;开启严格模式,注意,严格模式下,set代理如果没有返回true,就会报错

async

<script>
async function name([param[, param[, ... param]]]) { statements }
		// name: 函数名称。
		// param: 要传递给函数的参数的名称。
		// statements: 函数体语句。
</script>		

特性

  1. async 函数中可能会有 await 表达式,async 函数执行时, 如果遇到 await 就会先暂停执行 ,等到触发的异步操作完成后,恢复 async 函数的执行并返回解析值
  2. await 关键字仅在 async function 中有效。如果在 async function 函数体外使用 await ,你只会得到一个语法错误

Proxy和Reflect

  1. Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async
    函数的执行并返回解析值。非 Promise 对象:直接返回对应的值
  2. Proxy可以对目标对象的读取、函数调用等操作进行拦截,然后进行操作处理。它不直接操作对象,而是像代理模式,通过对象的代理对象进行操作,在进行这些操作时,可以添加一些需要的额外操作
  3. Reflect 可以用于获取目标对象的行为,它与 Object 类似,但是更易读,为操作对象提供了一种更优雅的方式。它的方法与 Proxy 是对应的
  4. Proxy 对象由两个部分组成: target 、 handler 。在通过 Proxy 构造函数生成实例对象时,需要提供这两个参数。 target 即目标对象, handler 是一个对象,声明了代理 target 的指定行为

has用于拦截 HasProperty 操作,即在判断 target 对象是否存在 propKey 属性时,会被这个方法拦截。 此方法不判断一个属性是对象自身的属性,还是继承的属性。 true说明存在,false不存在

<script>
construct(target, args)  用于拦截 new 命令。返回值必须为对象
delete obj.b; 可删除b 因为时直接对obj操作,忽略proxy的限制
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值