ES6 Proxy代理
<!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>
<script>
// 代理是ES6中新增的构造函数 但是它的特点是 实例自身没有任何属性和方法
// Proxy 是一个代理构造函数
var p = (function() {
var star = {
name: '刘德华',
age: 58,
sex: "男"
}
var p = new Proxy(star, {
// get是一个函数 它规定了 通过代理对象读取目标对象属性时的处理方案
get(target, prop, self) {
console.log("通过代理对象访问的");
if (prop === "age") {
return 0;
}
return target[prop];
},
// set是一个函数 它规定了 通过代理对象设置目标对象属性时的处理方案
set(target, prop, value, self) {
console.log("通过代理对象设置的");
if (prop === "age") {
return;
}
if (prop === "sex") {
return "男";
}
target[prop] = value;
}
})
return p;
})();
// console.log(p.name);
// console.log(p.age);
p.name = "马德华";
p.sex = "女";
</script>
</body>
</html>