Es6中Proxy使用
var obj = new Proxy(
// 第一个参数, 是一个对象参数target, 其中的内容就是参数的名称和原始值.
{
count: 10
},
// 第二个参数,handler, 参数的内容是处理的方法, 这里为get、set两个方法.
{
get: function (target, propKey, receiver) {
console.log(`getting ${
propKey}!`);
console.log(`${
propKey}`);
console.log(receiver); // receiver 是对象本身
return Reflect.get(target, propKey, receiver);
},
set: function (target, propKey, value, receiver) {
console.log(`setting ${
propKey}!`);
console.log(`${
propKey}:${
value}`);
return Reflect.set(target, propKey, value, receiver);
},
delete: function(target, propKey,receiver) {
console.log(`deleteing ${
propKey}`);
return Reflect.deleteProperty(target, propKey)
}
}
);
// obj.count
// getting count!
// count
// ++obj.count
// getting count!
// count
// setting count!
// count:11
// obj.name
// getting name!
// name
// { count: 11 }
obj.name = 'kobe'
// obj.name
// setting name!
// name:kobe
// getting name!
// name
// { count: 10, name: 'kobe' }
delete obj.name
obj.name
// deleting name
// getting name!
// name
// { count: 10 }