Создать "кастомный" слушатель не проблема, проблема в том что Вам нужно самому контролировать процесс или, другими словами, "диспатчить ивент"
var event = new Event('build');
// Listen for the event.
elem.addEventListener('build', function (e) { /* ... */ }, false);
// Dispatch the event.
elem.dispatchEvent(event);
В вашем случае можно добавить метод activate, который будет менять флаг и "диспатчить ивент"
В jquery это делается так:
$( document ).trigger( "myCustomEvent", [ "bim", "baz" ] );
Почитать можно
тут про js и
тут про jQuery
Если вы не можете вешать такое событие глобально и нужно привязать именно к экземпляру класса, то просто
реализуйте шаблон наблюдателя для класса.
Пример грубой реализации:
var events=[];
this.on = function (event, callback) {
events.push({e: event, fn: callback});
}
this.activate = function (){
vars.active=true;
for(let e of events)
if (e.e==='active') e.fn.apply(this)
}
И можно ещё посмотреть в сторону react или что попроще - vuejs, там такое реализовано на отличном уровне.