带ES6类的动态Getters / Setter

时间:2016-08-16 15:06:16

标签: dynamic proxy ecmascript-6 getter-setter

我一直在网上搜索并找到了一些解决方案,但不是一个易于实现的ES6 Class动态设置器解决方案。

我想要的是我的类中的动态setter,这样当我从外部添加任何可能的属性时,将在该属性上发生某个操作。我读过Proxies,这似乎是合理的解决方案。但是,我无法理解如何正确实现它,并希望你们的人对此有所了解。

谢谢!

1 个答案:

答案 0 :(得分:-2)

let property_one = 'one';
let property_two = 'two';

/**
 * ConfigurationClass class.
 */
class ConfigurationClass
{

    /**
     * Constructor.
     *
     * Create instance.
     */
    constructor(config = {
        'property_one' : property_one,
        'property_two' : property_two,
    })
    {
        this.__proto__ = new Proxy(config, {
            get: (container, property)        => (property in container) ? container[property] : undefined,
            set: (container, property, value) => (container[property] = value) ? true : true
        });
    }

};

let configurationClass = new ConfigurationClass();

console.log(configurationClass.property_one);   // one
console.log(configurationClass.property_two);   // two
console.log(configurationClass.property_three); // undefined