"use strict";
Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol。
function* objectEntries(obj) {
const propKeys = Reflect.ownKeys(obj);
console.log(propKeys);
for (const propKey of propKeys) {
yield [propKey, obj[propKey]];
}
}
const jane = { first: 'Jane', last: 'Doe' };
for (const [key,value] of objectEntries(jane)) {
console.log(`${key}: ${value}`);
}
var f = objectEntries(jane);
console.log(f.next());
console.log(f.next());
console.log(f.next());
await 关键字仅在 async function 中有效。
如果在 async function 函数体外使用 await ,你只会得到一个语法错误。
Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
非 Promise 对象:直接返回对应的值。
async function helloAsync(){
await testAwait();
console.log("22222222");
}
helloAsync();
一个 Proxy 对象由两个部分组成: target 、 handler 。在通过 Proxy 构造函数生成实例对象时,需要提供这两个参数。
target 即目标对象, handler 是一个对象,声明了代理 target 的指定行为
严格模式set失效,开启严格模式方法"use strict";
has(target, propKey)
"检测的名称" in new Proxy()
用于拦截 HasProperty 操作,即在判断 target 对象是否存在 propKey 属性时,会被这个方法拦截。
此方法不判断一个属性是对象自身的属性,还是继承的属性。
存在返回true,否则false
let handler = {
has(target, propKey){
console.log(target);
console.log(propKey);
return propKey in target;
}
}
let exam = {name: "Tom"}
let proxy = new Proxy(exam, handler)
console.log('names' in proxy);