注释很详细,直接上代码
特点和用途:
- 控制和管理访问:可以通过代理控制对象的访问,实现更细粒度的权限管理。
- 增强功能:代理对象可以在真实对象的基础上,提供额外的功能,例如缓存、延迟加载等。
- 保护隐私:保护代理可以限制对对象的直接访问,保护对象的隐私和安全性。
代理模式在实际应用中广泛用于对访问进行控制和管理的场景,同时也可以用于性能优化和增强对象的功能。
源码:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body></body>
<script>
/*
追求者将鲜花代理给电灯泡,
电灯泡监视被追求者的心情,
如果心情好,则将鲜花传递给被追求者。
*/
let Flower = function () {
console.log("鲜花");
};
let pursuer = {
//追求者
//追求者将鲜花代理给电灯泡
sendFlower: function (target) {
let flower = new Flower();
//将鲜花传递给电灯泡,即调用电灯泡的receiveFlower方法
target.receiveFlower(flower);
},
};
let bulb = {
//电灯泡
receiveFlower: function (flower) {
//监听被追求者的心情,如果心情好,则将鲜花传递给被追求者
pursued.listenGoodMood(function () {
pursued.receiveFlower(flower);
});
},
};
let pursued = {
//被追求者
//被追求者接收鲜花
receiveFlower: function (flower) {
console.log("收到花", flower);
},
//监听被追求者的心情
listenGoodMood: function (fn) {
setTimeout(function () {
fn();
}, 1000);
},
};
pursuer.sendFlower(bulb);
</script>
</html>