Можно ли назначить объекту
сеттер из функции? Например:
obj = {
customProps = {},
// по-старому, так работает:
setter(name, val) { // какая-то своя функция сеттер
console.log("Obj property " + name + " is set to " + value);
this.customProps[name] = val;
},
set foo(val) { this.setter( "foo", val); }, // НО не хочется писать такое для каждого свойства
// можно ли как-то так:
assignSetter: function(name) {
this set [name](val) { this.setter( name, val); };
},
init: function(propsArray) {
propsArray.forEach(function(name) { this.assignSetter(name); });
}
};
obj.init(['bar', 'baz', 'propA', 'propB']); // Вжух! – и назначились сеттеры для каждого свойства
// а потом попозже ещё добавить:
obj.assignSetter('zzz'); // и можно obj.zzz = 'ZZZ'; и выведется в консоль запись