web前端全系列 教程
1839个小节阅读:2243.5k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Proxy
用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程
Proxy
可以理解成,在目标对象之前架设一层“拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy
这个词的原意是代理,用在这里表示由它来“代理”某些操作,可以译为“代理器”
xxxxxxxxxx
var user = {};
var obj = new Proxy(user,{
get:function(target, propKey){
console.log(target, propKey);
},
set:function(target, propKey, value){
console.log(target, propKey, value);
}
})
obj.count = 1
obj.count
xxxxxxxxxx
var user = {};
var obj = new Proxy(user,{
get:function(target, propKey){
console.log(target, propKey);
return 10
}
})
obj.count = 1
console.log(obj.count);
xxxxxxxxxx
var user = {};
var obj = new Proxy(user, {
set: function (target, propKey, value) {
if (propKey === "age") {
if (!Number.isInteger(value)) {
throw new TypeError('The age is not an integer');
}
if (value > 200) {
throw new RangeError('The age seems invalid');
}
}
target[propKey] = value;
}
})
obj.age = 20
obj.name = "iwen"
console.log(obj.age);
console.log(obj.name);
实时效果反馈
1. 下列代码运行结果是什么:
xxxxxxxxxx
var user = {};
var obj = new Proxy(user, {
get: function (target, propKey) {
return "不给你看"
},
set: function (target, propKey, value) {
if (propKey === "age") {
if (!Number.isInteger(value)) {
throw new TypeError('The age is not an integer');
}
if (value > 200) {
throw new RangeError('The age seems invalid');
}
}
target[propKey] = value;
}
})
obj.age = 20
obj.name = "iwen"
console.log(obj.age);
A The age is not an integer
B The age seems invalid
C 20
D 不给你看
答案
1=>D