html5

本文详细介绍了JavaScript中的ReflectAPI如何获取对象所有属性,await关键字在async函数中的作用,Promise的暂停执行和非Promise对象的返回,以及Proxy对象的构成和使用。同时讨论了严格模式下set方法的失效及其处理方式。
摘要由CSDN通过智能技术生成

Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol。

await 关键字仅在 async function 中有效。
        如果在 async function 函数体外使用 await ,你只会得到一个语法错误。 
        Promise 对象:await 会暂停执行,等待 Promise 对象 resolve,然后恢复 async 函数的执行并返回解析值。
        非 Promise 对象:直接返回对应的值。

一个 Proxy 对象由两个部分组成: target 、 handler 。在通过 Proxy 构造函数生成实例对象时,需要提供这两个参数。
        target 即目标对象, handler 是一个对象,声明了代理 target 的指定行为
        严格模式set失效,开启严格模式方法"use strict";

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		// "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());
		
		// async function helloAsync(){
		//     return "调用我";
		//   }
		// console.log(helloAsync())
		// helloAsync().then((value)=>{
		// 	console.log(value);
		// })
		// helloAsync().catch((value)=>{
		// 	console.log(value);
		// })
		
		
		// var abc = new Promise(function(resolve,reject){
		// 	resolve("调用一下")
		// 	// reject()
		// })
		// abc.then((value)=>{
		// 	console.log(value);
		// })
		// console.log(abc);
		
		// function testAwait(){
		   // return new Promise((resolve) => {
		   //     setTimeout(function(){
		   //        console.log("11111111");
		   //        resolve();
		   //     }, 1000);
		   // });
		//    return setTimeout(function(){
		// 		  console.log("33333333");
		// 	   }, 1000);
		   
		// }
		// 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";
		
		// Number.isInteger(10.1)检测是否为整数,整数返回true,否则false
		// let target = {
		//     name: 'Tom',
		//     age: 24,
		// }
		// let obj = {};
		// let objs = {
		// 	a:50
		// }
		let objs = {
			a:50
		}
		function sub(a, b){
			a = objs.a;
		    return a - b;
		}
		
		let handler = {
		    get(target, propKey, receiver){
				// console.log(target);
				// console.log(propKey);
				// console.log(receiver);
				return "hello"+target[propKey]
			},
			set(target, propKey, value, receiver){
				// console.log(target);
				// console.log(propKey);
				// console.log(value);
				// console.log(receiver);
				target[propKey] = value;
			},
			apply(target, aaa, args){
				console.log(target);
				// console.log(objs);
				console.log(aaa);
				console.log(args);
				console.log(Reflect.apply(...arguments));
				// return Reflect.apply(...arguments)
			}
			
		}
		let proxy = new Proxy(sub, handler);
		proxy.apply(window,[5,1]);
		
		
		// let proxyEpt = new Proxy(obj, handler);
		// console.log(proxyEpt.name);
		// proxyEpt.name = "zs";
		// console.log(proxyEpt);
		// console.log(obj);
		// console.log(proxyEpt.name);
		// let proxy = new Proxy(target, handler);
		// console.log(proxy);
		// console.log(proxy.name);
		// proxy.age = 18;
		// Object.defineProperty(,)
		// console.log(target);
		
		// console.log(!Number.isInteger(10.1));
		
		// var a  = 10;
		// function func(a,b){
		// 	return a+this.a;
		// }
		// let obj = {
		// 	a:20
		// }
		// let arr = [11,22];
		// console.log(Reflect.apply(func,obj, arr));
	</script>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值