2016-08-16 3 views
1

Я искал в Интернете и нашел некоторые решения, но не простое решение для динамических сеттеров в классе ES6.Динамические Getters/Setters с классами ES6

Что бы я хотел - это динамический сеттер внутри моего класса, поэтому, когда я добавляю любое возможное свойство извне, в этом свойстве будет выполняться определенная операция. Я читал о Proxies, и, похоже, это разумное решение для этого. Тем не менее, я не мог понять, как правильно его реализовать, и хотел бы, чтобы ваши ребята вносили свой вклад в это.

Спасибо!

+1

См. Http://stackoverflow.com/q/32622970/218196 для примера, как это можно сделать *. tl; dr: применить прокси-сервер к вновь созданному экземпляру в конструкторе. –

+0

Да! огромное спасибо – RonH

ответ

-3
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 
Смежные вопросы