Создание событий с помощью закрытия Google

Я хотел бы использовать события для связи между моими объектами в среде закрытия Google (GC).

Предположим, у меня есть два класса foobar.Boss и foobar.Employee . Босс хочет знать, когда Сотрудник приготовил кофе и был ли этот кофе без кофеина (на этой неделе он отказывается от кофеина).

GC сделал доступными классы, которые, кажется, предоставляют средства для этого, goog.events.Event и goog.events.EventTarget .

Не зная лучше, я бы подумал, что это будет работать так:

foobar.Employee.prototype.makeCoffee = function(isDecaf)
{        
    this.coffeeMaker.putCoffeeInMachine(isDecaf);
    this.coffeeMaker.start();
    var event = new goog.event.Event('COFFEE_ON', { isDecaf: isDecaf });
    goog.events.dispatchEvent(event);
}

foobar.Boss.prototype.addEmployee = function(employee)
{
    ...
    goog.events.listen(employee, 'COFFEE_ON', function(e)
    {
        if (e.target.isDecaf)
        {
            this.refillMug();
        }
    }, false, this);
    ...
}

Это правильный образец? Меня смущает класс goog.events.EventTarget - как цель отправляет события? Разве с целью что-то не происходит?

Этот вопрос полезен, но хотелось бы получить более прямой ответ.

9
задан Community 23 May 2017 в 12:23
поделиться