В API мне нужен простой и легкий способ установить/сбросить свойство true/false объекта. Мне пришло в голову, что я мог бы использовать инструкцию get property, чтобы изменить свойство следующим образом:
Код: Выделить всё
class TEST{
active = true;
get inactive(){
return !this.active;
}
get setInactive(){
this.active = false;
return false;
}
get setActive(){
this.active = true;
return true;
}
}
Итак, хотя технически свойства являются «получателями», названия свойств указывают на то, что они фактически устанавливают значение свойства. Кажется, что следующее работает нормально:
Код: Выделить всё
let obj = new TEST();
console.log( obj );
obj.setInactive;
console.log( obj );
obj.setActive;
console.log( obj )
генерация вывода
Код: Выделить всё
TEST { active: true }
TEST { active: false }
TEST { active: true }
Проблема, которую я могу предвидеть, заключается в том, что может существовать широко распространенное соглашение, согласно которому функция получения никогда не меняет состояние объекта, кроме как тривиальными способами. Это соглашение может привести к тому, что кто-то предположит, что он может перечислить значения всех функций-получателей, не проверяя их фактическое поведение.
Итак, существует ли соглашение о хорошей практике, позволяющее избегать такого рода использования?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... e-property