Я хочу, чтобы обернуть значения в массиве, всякий раз, когда они установлены на моем объекте, но я хочу, чтобы «глобальные» объект пространства имен ЧИСТОГОES6 сеттер - сохранить объект ЧИСТОГО // карты Params на объекте экземпляра
проблема заключается в том, что у меня есть список из 8 реквизита, которые имеют такое же требование
Я не хочу, чтобы объект быть загрязнен тоннами get
и set
, плюс this._left
, чтобы избежать бесконечного цикла при установке такого же пропеллера, что это контролируемых установщиком ....
Например:
class Tree {
constructor (config) {
this.left = config.left || [this];
this.right = config.right || [this];
this.child = config.child || [this];
this.parent = config.parent || [this];
this.somethingElse = config.somethingElse || [this];
// etc.
}
}
myObj = new Tree();
myObj.left = 2;
Я хочу, чтобы гарантировать, что myObj.next === [2]
Моя попытка (слишком загрязнен):
['left', 'right', 'child', 'parent', 'etc', 'adfasdf', 'dsfmkfs', 'previous'].forEach(direction => {
Object.defineProperty(this, prop, {
set: (val) => {
if (!Array.isArray(val)) {
this['_' + prop] = [val]
} else {
this['_' + prop] = val;
}
},
get: (val) => {
return this['_' + prop];
}
});
});
Одно усовершенствования было бы использовать 'пусть реквизит = {}' 'сохраняющих реквизита [«_»+ проп] = значение 'по крайней мере сохранить частные vars от глобального – neaumusic
Что означает« сохранить пространство имен глобальных объектов чистым »? И почему вы пытаетесь достичь этого? С какой целью? – jfriend00
Когда я выхожу из объекта экземпляра, я просто хочу видеть реквизиты, не хочу видеть функции нечеткого геттера и сеттера. – neaumusic