let person = {
name: 'tony'
}
let proxy = new Proxy(person, {
get: function (target, property) {
return target[property]
}
})
console.log(proxy.name);
let obj = {}
let setVid = {
set: function (object, prop, value) {
Reflect.set(object, prop, value)
}
}
let p = new Proxy(obj, setVid)
p.age = 200
console.log(p.age);
let handel = {
get(target,key){
console.log(key);
if(key[0] === "_"){
throw new Error('内部属性禁止外部访问')
}
return target[key]
},
set(target,key,value){
target[key] = value
}
}
let target = {}
let proxy = new Proxy(target,handel)
let person = {name:'张三'}
let handel = {
deleteProperty(target,key){
console.log('不允许删除属性');
delete target[key]
}
}
let proxy = new Proxy(person,handel)
delete proxy.name
console.log(proxy.name);
let target = function(){return '我是目标函数'}
let handel = {
apply:function(){
return '我是拦截你的'
}
}
let p = new Proxy(target,handel)
console.log(p());
let father = {
name:'father'
}
let handel = {
has(target,key){
if(key[0] === '_'){
return false;
}
return key in target
}
}
let target = {_prop:'a',prop:'b'}
target.__proto__ = father
let proxy = new Proxy(target,handel)
console.log('_prop' in proxy);
console.log('name' in proxy);
function Person(name){
this.name = name
}
let person = new Person('tony')
let proxy = new Proxy(Person,{
construct:function(target,key){
return {name:'Chris'}
}
})
console.log(new proxy('张三').name);