大学生课堂笔记

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		// let obj = {
		// 	a:10
		// }
		// let a = {
		// 	sub(a, b){
		// 		console.log(this.a);
		// 	    return a+this.a
		// 	}
		// }
		// console.log(a.sub.apply(obj,[20]));
		
		// let obj = {
		// 	a:10
		// }
		// function sub(a, b){
		// 	return a+this.a
		// }
		// let handler = {
		//     apply(target, ctx, args){
		// 		console.log(target);
		// 		console.log(ctx);
		// 		console.log(args);
		//         return Reflect.apply(...arguments);
		//     }
		// }
		// let proxy = new Proxy(sub, handler)
		// console.log(proxy(2, 1));
		// console.log(proxy.apply(obj,[2,1]));
		
		// 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);
		
		// construct(target, args)用于拦截 new 命令。返回值必须为对象。
		// let handler = {
		//     construct (target, args, newTarget) {
		// 		console.log(target);
		// 		console.log(args);
		// 		console.log(newTarget);
		//         return Reflect.construct(target, args)  
		//     }
		// }
		// class Exam { 
		//     constructor (name) {  
		// 		console.log(name);
		//         this.name = name 
		//     }
		// }
		// let ExamProxy = new Proxy(Exam, handler)
		// let proxyObj = new ExamProxy('Tom')
		// console.log(proxyObj)
		
		// function exam(name){
		// 	console.log(name);
		//     this.name = name;
		// }
		// console.log(Reflect.construct(exam, [[99]]));
		
		// let handler = {
		//     deleteProperty(target, propKey){
		// 		// console.log(target);
		// 		// console.log(propKey);
		// 		// delete target[propKey];
		//         return true;
		//     }
		// }
		// let target = {
		// 	a:1,
		// 	b:2
		// }
		// Object.defineProperty(target,"c",{
		// 	value:3
		// })
		// let proxy = new Proxy(target, handler);
		// // proxy.name = "zs"
		// delete proxy.a;
		// delete proxy.b;
		// delete target.a;
		// console.log(target);
		
		let handler = {
		    defineProperty: function(target, propKey, propDesc){
				console.log(target);
				console.log(propKey);
				console.log(propDesc);
				target[propKey] = propDesc.value;
		        return false;
		    }
		}
		let target = {}
		let proxy = new Proxy(target, handler)
		proxy.name = "Tom"
		// handle defineProperty
		console.log(target);
	</script>
</html>

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值