причина, почему он не работает в том, что, делая method(this)
вы на самом деле вызвать его немедленно. method.bind(checkbox)
украсит функцию и изменит область действия флажка, когда он будет вызван позже.
Почему бы не прокси-серверу?
var self = this;
checkbox.addEvent('change', function(e) {
self.checkBoxChangeAgain(this);
});
new Class({
checkBoxChangeAgain: function(checkbox) {
this; // instance
checkbox; // == org checkbox
}
});
По умолчанию первым аргументом обработчика события будет событие, а область действия будет триггерным элементом.
отсюда:
checkbox.addEvent('change', this.checkBoxChangeAgain);
будет означать, что:
new Class({
checkBoxChangeAgain: function(event) {
this === event.target;
}
});
означает, что вы также можете:
checkbox.addEvent('change', this.checkBoxChangeAgain.bind(this));
и что будет работать как:
new Class({
checkBoxChangeAgain: function(event) {
this != event.target; // true
event.target === checkbox; // true
this; // the class instance
}
});
Надеюсь, это даст вам идеи. Кроме того, поиск bindWithEvent здесь на SO - в частности, замена bind с событием.
Спасибо, я в конце концов получил вокруг него, используя проход. Вы ответили мне в правильном направлении. – Ashley