У меня есть следующие объекты Javascript:
function Alfa() {
this.status='';
this.setStatus = function(value) {
this.status=value
}
}
function Beta() {
this.setSomething = function(setter) {
setter('Something');
}
}
А чем исполнение:
alf=new Alfa();
alf.setStatus('foo');
Это прекрасно работает, если вы посмотрите на значения alf , статус будет установлен в 'foo', но:
bet=new Beta();
bet.setSomething(a.setStatus);
Я ожидал, что bet выполнит setStatus функцию alf и установит значение status в 'что-то', однако Этого не происходит.
setStatus из alf выполняется, но это указывает не на alf экземпляр, а на Window , поэтому состояние свойства устанавливается на Окно не для alf .
Каков правильный подход для получения желаемой функциональности?
Это, конечно, упрощенная реализация, в реальной жизни я хочу передать эти функции alf обработчикам событий, поэтому я не могу изменить реализацию Beta , например:
$('xxx').click(alf.setStatus)