Этот вопрос сейчас старый, но есть и другое решение. Как вы уже упоминали, ваша проблема в том, что вы пропустили «new», и ссылка «this» в обработчике события всегда будет элементом, для которого было инициировано событие, а не объектом, обрабатывающим событие.
Поскольку вы используете JQuery, есть простой способ заставить это действовать так, как вы хотите. Используйте метод JQuery.proxy , чтобы установить контекст обработчика событий для использования вашего объекта как «this». В вашем примере вам просто нужно изменить строку
input.change(this._foo);
до
input.change(jQuery.proxy( this, "_foo" ));
Попробуйте, если вы снова столкнетесь с этой проблемой с JQuery.