Es6中Proxy使用

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 }

猜你喜欢

转载自blog.csdn.net/weixin_40944062/article/details/113798036